(navigation image)
Home American Libraries | Canadian Libraries | Universal Library | Community Texts | Project Gutenberg | Children's Library | Biodiversity Heritage Library | Additional Collections
Search: Advanced Search
Anonymous User (login or join us)
Upload
See other formats

Full text of "The Transactor Magazine Volume 7 Issue 06"

The Tech /News Journal For ConrftTOdore Computers 



ing Free! 



May i 987: Volume 7, Issue 06 



A kl- 



Random Numbers in Machine Language 
N-Body Simulator for the 64 
pLE Picture Files Revealled 
Beyond Bulletin Board Systems 
Commodore in Europe 
1350 Mouse Modifications 



-r ; 



•-H 




Structure Browser for the Amiga 
Guru Meditation Numbers Explainei 
More on Amiga File Structure mim 

^ Recursion Techniques Described 
Textscan for CP/M ^ ^^— ^»^ 

^J571 RAM Disk Copi"- 



^ift- 



ft 



^\ 



■■1 



V 



y 



i' 







■ ^- 



i 



y 



^ 

























^—r\\ 












^^r^ 






o 


'" ■- 



u , 



^ 




^. 



Life Doesnt Stand Still. , . 
Wtiy Siiould Your Pictures? 




Screen 



It used to be even the experts coJdn'f do it. 
Now. anyone coa 

MovifX) Picture* bv AHW II more thon Just onotfief or*T^^ 
package Its o v^rfxste new breokttvouoh in software tech- 
nology. 

Moving Pictures 4 fosT. snxxjth. tul-screen onmation that is 
totGiy under your control. 

Vou use your fovourtte graphics tool* to draw the frorr^es of 
your movie, then show it at ful aramation speed with a 
sirgle commandi 

Write movie "scripts ' in BASIC, usmg tt^ powerfiJ Moving 
Pictures corrrnond set for complete control of your cieo- 
tkx^ 

Whett^er you Ye a programmer or a novice, youl be obte to 
put together ond display intncate scer»es of your own 
Inventioa Vou con even edit yotr scripts or execute a BASC 

program wWte a movie is being dtoplaved - Moving Pteturei 
l$a muttttofllrlnff lyitem! 



betrg fun in Jtserf, Moving Pidurm lets you eosly 
odd orvnation sequences to your own BASC programs. 

Just a few of the mony Moving Pictures features: 

• aiows split screen operatioo ^ port graphics, part text * 
even wtiie a movie ts runno^g 

• repeat, stop ot any frame^ change posltiorx ond cotours, 
vary display speed ond more 

• hold sever a* movies in memory ond switch instantly from 
one movie to the otiier 

• ir^tont. on-lne rielp avaikobte at ttie touch of a key 

• no copy protection used on the dbk 

• ord here> the best port the price is Just $29.9it 

• Graphics program ret included Moving Pictures uses a 
standard hhres bitmap, so mony graphic programs are 
tuly compatble, inc*gdlrx3 Flexidrow*. Ooodte", Gold Disie 
Art Pocltage', Print Shop Screen MogK:*, Perspectives". 



Moll Orders: fransoctor Publlsttlng Inc^ 500 Steeles Avenue, Milton. ON^Canodo. m 3P7 (416) A7M43a 

(or UM order cord ot center). 



Canadion and Inter notlonol Dealer Inquiries To: 

Norland Software Products. 251 NIpluIng lload. Unit X 

Milton. ON. Conado, L9T 425. (416) ft764774. 



USA Dealer inquiries To: 

American SofNfore Disfffbutor* trie,, lox 2W, 

Urbano lU USA 61901 1^aOO-22S7941, 



M 



Volume 7 
Issue 06 

Circulation at Large 
72,000 







Simulations and Modelling 

Start Address Editorial 3 



Bits and Pieces ... 6 

Using the WAtT Fuiiction For Screen Changes 
^ Last File used ' update 
EasyC'l28Un-New 
Printer oirtput from aa ML rnonitor 
Quick Directory Hider 
Editing in the C-Power SheJI 
'High-Res 128' Video Rx 
Little-Known Features of DOS 
The Amazing 1660 Modem 
Bit Correctioni DOS Wedge 
Correction: format Track 36 
Assembler Start-up Code 
C128RS-232Bug5 
Using The C-128 System Vector 
Moving The Cassette Buffer 
Reset and Run 
Border Animatbnl 
Verifizer and Fast--l^.oad Cartridges 
Amiga Bits 

The Vanishing Workbench 
Beating The I.ow Memory Blues 
Modifying The Epson Printer Driver 
To Work With Other Printers 



5*?<.*^^^ 



12 



TransBloopers 

EPROM Burns 

Hi-res TVace Utiiity SYS Address 

Uncontrolled ^rite Bits 

Tape Verifizzle 

Slashing and Pounding 



.. 15 



Letters - . * * . 1 . . . 

Angling for weird parts 

Nefarious plots 

Yet another request for Urdu scrftware 

C*64 Numerics 

Remote line feeds 

Kernal revision revisk>n 

Eavesdropping on niodems 

IEEEforC-128 

Amiga marketing 

No niche for Amiga 



NewsBRK 77 

Submitting hfEWS BRK Press Releases 

Transactor Currency Standard Decreed 

Subscription intersection Set 

Disk Subscription Notes 

Toronto CompuServe Node 

Rree Transactor T's 

Subscriber Mail Orders 

Customs/Duty on Hardware Products 

Sold Out! 

Transactor Mail OnJer 

Transactor Disks, Back issues, and Microfiche 

New Books from Abacus 

Eye-Scan for C-64/128 

Spartan rww with Apple II disk 

Peek A Byte 128 



Smile! You're on RLE a short TeleColumnfoHowed by RLEfHes revealed , , . 

Beyond Bulletin Board Systems a comparison or omine services , . . 

L^OmimOOOre in tjUrOpe with a comparison of equipment pnces 

rrOVOkin§ lriOU§nt recursion described, and appHedm two games 

Machine Language Random Number Generation , . , 

C64 N-Body Simulator solar systems inaction! 

A Two Button Mouse modifications and software for the 1350 mouse 

EPROM PrC^rammer Update corrections, modifications, and more , , . 

rieip! Meip! a transparent instant help utility 

1571 RAM Disk Copier copy double stded disks in one gulp 

TeXtSCan a CP/M source fUe browser 

That Guru Does Have A Message decipherthosemeditatbnnumbers 

Structure Browser a handy lool for Amiga explorers 

Amiga File Structure another took at disk data format 

Amiga Dispatches with a special World of commodore ^ae report 

Compu-toons 



16 
19 
21 
24 
27 
31 
36 
48 
43 
52 
55 
59 
71 
72 
74 
76 



Note: Before entering programs, 
see **Verifizer" on page 4 



fiw Thmoclof 



May T987; ^MiWM 7, luiM O6 



AtkosEdtor 

Karl J H Hikkm 



RchirdEwre 



ITAmafnMi Editor 

Nek Ativan 

Art DircctDT 
Jolin 



Adnilnlatnitloii Jk 

Afinr RirhAfd 
KMhryn HoJtoway 



iHiAdun 
Jim 

Amtio(ry Bmtam 

UmBolbach 
fUntwBoM 
AnihonyBiyMt 
Jim Bunvfield 

Betty Ck)r 
JonphCilSrey 
GiryCoU> 
Tom K Coflopy 
RobenV Dttvit 
EUubethDeil 
Mf A Deiningef 
rHnkX DiGioift 
QiritOunn 
hlidiMl J. EnUfw 
JackFkrrah 
Willum RMaen 
Jim Frotf 

MtftinGoeM 

"nm Grantham 
AflMR Hcnl 
Jollfi Hoktuin 
DmhdHook 

NMHB TWm 

Hoberl Huehn 

David Janlwwsk] 
Bobionkfran 

OMoR Kafim 
tonwIQMMn 

JtaaeKnH^ 
QwUpqKuct 



JaoiBi E. LaPom 
Jama A UioinU 

RkrhanlLucat 

DwUMvlta 
atovtUcOyital 

ftKyMdnnla 
atow Michel 
Chrii 
Terry 
Ralpli Monfl 
Rick Monte 
Mchad Moamaii 
GeraUNauMl 
Nod NytiHn 
Kflvln O'Omnor 
Richard rVrnt 
Donddhvvn 
'toiy Pridham 
Raymond Quiriinf 
Gavy Royal 
MmiW.Rm 
DavklShUoh 



PA 

Edward Smfda 
DtrrenJ Spniyt 
Aubray Stanley 
David SlKlc^ph 
Richard Smnger 
Anion IVvueniete 
Kafd Vander Lugl 
A\adTy% Vilkaa 
jKkW^am 
Evan Williaim 
CbniWong 



Attk: lypamdRf Lid. 

Frintbif 
Printed in Candda by 

M« Ij^an Hunter Pnming 



Frogram LisCingi In The IVmiiAactor 



Al pfoy a w a tttf«d in The TVnwartni wiU nywr m Ihey would on your aacen in Upper/Lower 
caae mode. Todartfy two palMMdimcler mtx-upa^Mims will appear « D' and the letter "o" 
wUi of coine tie In loMW caae. S«CQnd|)r. the lowtr caae L (T) ii a stra^ 
naubm 1 which hat an an^ lop. 



Many programv will ci>ni^n m wr at vkleo charaden that rapnnnt cunor mammmti. cotoure. or 
hinciion key» Theae wiH alao be ihown exactly aa they would appeer on your screen, but they're 
llMed here for viiMCfKt Abo lefneinber CTItLH) within qtMlai la Uentkal 10 a Curi^ 



wUI contain nnvthtfdiowooiMatfvt^noaLOItan the number of 
you Inaan wilt not be critical 10 cflrrectopHMlon of the pragnm When fete, the requind 
wilbeAiMm.ftw 



pnm 



iutfinght ' - would be ihown aa - pnm *l10^»0M)iutfing^ * 



lbrPET/ay|/VIC/i4 



I 



tight 

Ld% ^ (Lh) 

KVS 

Kvsoir- 



I 



STOP 



Ceiour Clwnclm fw VIC / ft 



U 



- lCfm\ 

- [PH 



Y«a«w- [Yall 



] 

Qnft 
U 
U 
GnryS 



-iCrS] 



ftirtiBalteyBw-VIC/M 




FS- 

FT- 



8 



Please Note: Hie Transactor's 
phone number is: (4 16) 878-8438 





Ul 




Ua«] 



MtUBO l9Si 
|V|Mrlml« 



IIT4B 
411 fN 4774 



spf. 4it i7i atsa 





mm ^f^mmOmX 



aOU>OUf:T>»BMH rfTVT><— dlyWWiW ia2ai.W4 

IB av^mmiw'Tm. tt.v7iai.il «!ot M a 01. 
M 7oi.tt.ai.oia8.ot 



•iti^eiaatvwsi 



HQ 



MSO 



ia 




isiMi.mi 4£S!nso.«c» 









Commodore's most recent worst kept secret is the Amigi 500 
arxl Amiga 2500. So (ar I've heard about the new models from 
no less than 8 different peopte from as many different ckies since 
the January CES in VegM, and I've retd about them in a couple 
of dub newsletters published befove the show even operved. 
Word is that several dealers who attended CES were offered a 
demonstration, but the machines were not "officially an- 
nounced*. 

The 500 sounds curiously similar to Ihe Atari 1040 ST. A self- 
contained unit, except for the external power sig)ply, with a 372 
inch drive (probably at one end). 1 Meg of RAM. and Kiskstart in 
ROM Apparently the ROM Kickstart will have enough "hooks" 
so thai updates can be osmosed into the system Price is 
supposed to open around $600 US,, the same tag the Commo- 
dore 64 carried when ti arrived. 

The 2500 is being aimed at the business market, especially in 
the computer aided design fiekJ. Ttie word 'IBM compatibility'* 
is getting toned around apin. with unconrirmed reports of IBM 
card sk>t*> aiid an onboand 8088. The case can be tilted with 3 
disk drives in any combinatmn of 3V2. SV^. and hard disk. Price 
b supposed to be around ihe S2000 US. mark, but it s rumoured 
that Europe and Canada will get test market shipments before 
it's released in the States. 

Back when the 1000 hrt the market. Commodore saH the Amiga 
wouM be a new line of machines, not just another sibling to be 
shoved out the door. Commodore shoukl be proud to be keeping 
this proTnisc Tlic Antiga is a fine product, and expk>iting a good 
thing is good business, fbr this I tip my hat toward West Chester, 
because businevis what Commcnlure needs to slay alive, and I. 
for one. want them to. However, it's the executbn ot this expk>it 
that has me scratching my head. 

Comnxxhwe wanted 1o keep news of the 500 and 2500 as quiet 
as poasible. partkcuiarly the 500. They're afraid that too much 
earty puNk-ity woukl hurt sales of the 1000. But I don't think 
that should be their largest concern. (Even if I dkl. the publicity 
they'll get here probably won't affect a single sale - most 
computer hobbyists don't read The T until well alter they buy) 
Commodore intends to buikJ the 250Q first, folkywed by the 500. 
and I think that's the wrong order. 



If a whole neighbourhood of $200,000 dollar homes were going 

up, but 2 muruhs later you know anutt^r neightxHirhood not tax Karl J.H. Hiklun. Editor in Chief 



away will have acres of similar homes tor only $60,000. 
wcHiklnH you wait and see? I know I woukl. Now granted, the 
less expensive nvxlels might nut appeal to me. But if they came 
along first, and had everything I wanted. I'd probably bite even if 
I coukJ affcird the luxury model. 

Regardless, most won't have the extra 1 400 or so dollars to sink 
iitfo the Amiga 2500. and most won t need the added power. 
Perhaps Commodore wants this to make the 1000 more attrac- 
tive at point of purchase. But the 500 is not rruxrh of secret, and it 
woukl seem to me that less people woukl wait for the more 
expensive machine to arrive, as opposed to those who will wait 
for the less expensKT Amiga. Introduce the 2500 first, and I 
believe sales will sknv for both of the available models. Bring out 
ttie 500 first, and there will be popularity for it that includes 
those who coukln't afford the 1000. The small market ratk) of 
potential 2500 users will have to wait, txit not for long if 
Commodore gets moving on it 

Commodore shouWn't fear for the 1000 for olfier reasons. The 
price difference between the 1000 aiKl 500 will not be that big. 
and unlike the 500. the 1000 will have the separate keyboard 
arxl the expandability to maintain its posture Once all three 
models are out I believe none of them will be ignored at the 
counter. 

Commodore has probabfy conskiered this situatk>n very care^ 
fully, and their decisfon is one that undoubtedly spans much 
more than just one page of details. One report states that both 
machines shoukl be ready by earty 1987. II that happens. 
Commodore shoukl fare pretty well whkrhever way they do it. 

One thing to remember, all of the above to rumour. If Commo- 
dore shelves any or all of it. disappointment will be unjustifiable. 
On the other hand, when the new Amigas do arrive. Commo- 
dore shoukl be looking forward to subsequent profitable quar- 
ters, and those shares I didn t buy back in '78 just might be 
worth fooking into right rx>w. Tom morrow, in fact. 

Remember, tfiere's nothing as constant as change. I remain. . . 




Thft 



mawwmvtikmmi.mmoi I 



Using "VERIFIZER 



ff 



The Transactors Foolproof Program Entry Method 



VERJRZER should be run before typing in any k)ng program from the 
pages o( The TVaraador. Ii will IH you check your work line by line as 
you enier the pragnmii, and calch frustrating tvn;>inf{ errors. TTk VERin^ 
ZFR concept works by ^qia^ing a two-leMr code for each pro^m 
line which you can check ag^nsl the corre^xMiding code in the 
pfogram ttsiing 

There are five versfons d VERIFIZER here: one for PET/CBMs. VTC or 
C64. Plus 4. C128. and B128 Enter the ^ipiicaUe pnignm and RUN it 
H you get a data or checksum error, re-check ihe program and keep 
trying until all goes w<eit. You shouM SAVE the program, since you'll 
want to use M every time you enter one o( our programs. Once you've 
RUN (he foader. remember to enter NEW to purge BASIC text space. 
Then turn VERIFIZER on with: 

SYS 634 to enabJe the PET/CBM version (off SYS 637) 
SYS 626 to enable the C84A/ICvenion (oft SYS 631) 
SYS 4096 to enabto the Plus 4 version (oH SYS 4099) 
SYS3072.1 !0 enable !t>e CI 28 version (off SYS3072.0) 
BANK IS: SYS 1024fOf B128 (o« BANK 15 SYS 1027) 

Once VERIFIZER ts on. every lime you pi«i» RETURN on a program 
line a two-letler report code will appeer on the lop left o< the acieen in 
reverse field. Nole that these letters are in uppercase and will appear as 
graphics characters unless you are in upper/ lowercase mode {press 
shift/Commodore on C64 A^ 

Notes If a report code is mMng (or "— *) ii means we've edited thai 
Une at the last minute which changes the report code. However, this 
will only happen occasionally and usually only on REM statements. 

\\'ith VERtnZER on. just enter Ihe prt^ram from the magazine nor- 
mally, checking each report code after you press RETURN on a tine. If 
the code doesn't match up with Ihe letters printed in the box t^eside Ihe 
Ming, you can re-check and correct the line, then try again. If you 
wish, you can LIST a range d lines, then type RETURN over each in 
succearion while checking (he report codes as they ^)pear Once the 
program has t)een property entered, be sure to turn VERIFIZER off with 
the SYS indicated above before you do anything 



VERIinZER will catch transposition errors like POKE 52381.0 instevl 
of POKE 53281.0 l l ow tw ; VERfFtZER uses a "weighted checksum 
technique that can be fooled if you try hard enough: transposing two 
sets of 4 chaiaclm will produce the same report code but this should 
never happen short of deliberately (vcrlHier coukj have been designed 
to be more complex, but the report codes woukl need to be bnger. and 
using i would be more trouble than checking code manually). VERIFI- 
ZER ignores spaces, so you may add or omii spaces from the listed 
program at will (provkling you don't split up key%vords!). Sundard 
keyword abbievialkxis {iikt nE instead of next) will not affect the 
VERIFIZER report code. 



Technkal Info: VK:/C64 VERIRZER rokks In the caaaetn busier, so 
if V using a datairflr t>e aware that tape operatkins can be 

dangnoiisto Its lieriMt As lar as compatibility with other utilities goes. 
VERIFIZER shoukln't cause any prolslems suice it works throu^ ihe 
BASIC warm-start link and jumps to the original destinalkm o( the link 
after its finiihed. When disabled, it restores the link to its original 



CI 
CF 
LI 

MO 

DH 
GK 
OG 
JO 
AF 
IN 
ON 
IB 
OK 
EB 
HE 
01 
J8 
PA 
HE 
EL 
LA 
Kl 
EB 
DM 



KE 

JF 

LI 

BE 

DH 

GK 

FH 

KP 

AF 

IN 

EC 

EP 

OC 

MN 

MG 

DM 

CA 

NG 

OK 

AN 

GH 

JC 

EP 

MH 

BH 



PET/CBiyi VERIFIZER (BASIC 2.0 or 4.0) 

10 rem* data loader for ' venfizof 4.0' • 

1 5 rorri pet vers»oo 

20C8-0 

30 for ( -634 to 7S4 read apoke i.a 

40cs-cs4^a nexti 

50: 

60 if csOl 5580 then print" ••••• data error •• 

70 rem sys 634 

80erKJ 

100; 

1000 data 76.138. 

1010 data 173. 164. 

1020 data 145. 201. 



■ erKl 



2.120.173.163. 2. 
2. 133, 145. 88. 96. 
2,240. 16.141.164. 



133. 144 
120. 165 
2.165 
144. 169 
165.217 

58. 173 
253.189 
230.253 
236. 2 
229,165 
0. 120 
105.193 

24. 101 



1030 data 144. 141. 163. 2. 169. 165. 133. 
1040data 2.133.145. 88. 96. 85.228. 
1050 data 201. 13.208, 62.165.167.208. 
106O data 254, 1.133.251.162. 0.134. 
1070 data 0. 2.168.201. 32.240, 15. 
10S0data165, 253 41. 3.133.254, 32. 
1090dala198,254. 16.249.232.152,208. 
1100 data 251, 41. 15. 24.105.193,141. 
1110datat65 251. 74. 74. 74. 74. 24. 
1120datat41. 1.128.108. 163. 2.152. 
1130 data 251. 133.251. 96 

VIC/C64 VERIFIZER 

10 rem* data loader for 'venfizer' • 

1 5 rem v«c/64 version 

20CS-0 

30 for I - 828 to 958 read a poke i,a 

40cs«cs + a.ne)cti 

50: 

60 »fcs<>14755 then print" dataerror *••**': end 

70 rem sys 828 
80 end 
100 

1000 data 76. 74, 3,165,251,141. 2. 3.165 
1010 data 252. 141, 3. 3. 96,173. 3. 3.201 
1020 data 3.240. 17. 133. 252, 173. 2. 3. 133 
1030dala251.169. 99,141. 2. 3.169. 3.141 
1040 data 3. 3. 96. 173. 254. 1. 133. 89. 162 
1050 data 0. 160. 0. 189. 0. 2. 240. 22. 201 
1060dala 32.240. 15.133, 91.200.152. 41. 3 
1070data133. 90. 32.183. 3.198. 90. 16.249 
1080 data 232. 208. 229. 56. 32. 240. 255. 169. 19 
1090data 32.210.255.169. 18. 32.210.255.165 
1100 data 89, 41. 15. 24.105. 97. 32.210.256 
1110data165. 89. 74. 74. 74. 74. 24.105. 97 
1120date 32, 210, 255, 169 146, 32,210.255. 24 
11 30 data 32,240.255.108.251. 0.165. 91. 24 
1140daia101. 89.133. 89. 96 



VIC/M Double Vcrtftzer SIc%«q Walley, Siinn> inead. CA 

When using VERIFIZER' with some TVs. the upper left comer of the 
screen ts cut off. hiding the verifizer-dtspl^red codes. DOUBLE VERK 
nZER soK-es thu problem by showing the two-leilir vertflzer code on 
both the first and second row of the TV screen, lusi run the below 
progmti once the r^ular Verilizer is Activated, 



4 



100 for ad « 679 to 720;read da poke ad.da n&ci ad 

110sys679 print print 

120 print ' double ventizer activated * new 

t30data120. 169, 180. 141. 20. 3 

140 data 169. 2.141. 21. 3. 88 

150 data 96 162. 0. 189. 0. 216 

160datal57. 40.216.232.224. 2 

170 data 208. 245. 162. 0. 169. 

180data 4. 157. 40. 4. 232. 224 

190 data 2.206.245. 76. 49.234 



VEROBER For Tape V^erm 



Twi Potu, Rowley, MA 



The following modific a ti ons to the VeriTtzer loader will aikTw VIC and 64 
ownen with DMMeoes 10 utc the Verifizer directly (without the bider). 
After running die new loader, you'll have i special copy otf the Verifizer 
program which can be loaded from tape without disrupting the pro- 
gram in memory Make the k>lbwing additiona and changes to the VIC/ 
64 VERIFIZER loader: 



NB 
AL 
IB 



OC 
MO 
EG 
BO 
KH 
GL 
DC 



30 fori - 850 to 980 read a poke i.a 

60 rfC9<>14821 then print' •••••data error 

70 rem sys850 on. sys853 olt 

80 delete line 

100 deMeline 

1000 data 76. 96. 3.165.251.141. 2. 

1030 data 251. 169. 121. 141. 2. 3, 169, 

1070data133. 90. 32,205. 3.198. 90. 

2000 aS ■ * veriti2er.8y8850[spdce] ' 

2010 fori -850 to 980 

2020 a$ - a$ 4 chrS(peek(i)) next 

2030open l.tj.a$ dose 1 

2040 end 



end 



3.165 
3. 141 

16. 249 



hkiw RUN. pieiring f1>Y and R£COIU> when pRNnpl^ 
rewound iipe for easy future access). To use the special Verifbeer that 
has just been created, first load the piograin you wish to verify or 
review into your computer from either tape or disk Next insert the tape 
created above and be sure that it is rewound. Then mtm in direct 
modr OPEN I CLOSE I Press PLAY when prompted by the computer, 
and wait while the special Verifizer loads into the tape buffer Once 
loaded, the screen will show FOUND VERIRZER SY5850 To adMle. 
enter SYS 850 (not the 828 as in the ohginaJ program) To de-activale, 
iJieSYS8Sa. 

If you are going to use tape to SAVE a program, you must de-acthrale 
(SYS 8S3) since VERIRZER moves some of the intrrnal pointers used 
during a SAVE opentkm. Attempting a SAVE without turning off 
VERIFIZER first will usually result in a crash. If you wish to use 
VERIRZER again after using the tape, you'll have to reload it with the 
OPENI^XOSEI commands. 



Plut 4 VERIFIZER 



PM 
EE 
NH 
Jl 
AP 
HP 
JC 
ID 
PL 
CA 
00 
LP 
EK 



1000 rem* data loader for "varifistr -¥4' 

1010 rem • commodore pius/4 version 

1 020 graphK: t scnclr graphic rem make room for code 

1030 cs«0 

1040forj«4096to42l6 read X poke i.xch-ch + x: next 
t050 if ChOI 3146 then pnnt 'checksum error' stop 
1060 print * sys 4Q96 rem to enable ' 
1 070 print ' sys 4099. rem to disable * 
1060 end 

1090 data 76. 14. 16.165.211,141. 2, 3 
tlOOdaia 165.212. 141. 3. 3. 96.173. 3 
inOdata 3.201. 16.240. 17.133.212.173 
liaOdata 2. 3.133.211.169. 39.141. 2 
1130 data 3.169 16.141. 3. 3. 96.165 



01 


1 140 data 20, 133. 208. 162. 0. 160. 0. 189 


LK 


llSOdata 0. 2.201. 48.144. 7.201. 58 


QJ 


1160 data 176. 3.232.208.242,189. 0. 2 


DN 


1170 data 240. 22.201. 32.240. 15.133.210 


QJ 


1180 data 200 152. 41. 3.133.209, 32.113 


CB 


1 190 data 16. 196. 209. 16. 249. 232. 208. 229 


CB 


1200data 165.208. 41. IS. 24.105.193.141 


PE 


1210data 0. 12.165.208. 74. 74. 74. 74 


DO 


1220dala 24. 105. 193. 14t. 1. 12.108.211 


BA 


1230 data 0.165.210, 24.101.208.133.206 


BG 


1240 data 96 



PK 

AK 

JK 

NH 

OQ 

JP 

MP 

AG 

10 

GF 

MG 

HE 

UA 

JA 

El 

KJ 

DH 

JM 

KG 

EF 

CG 

EC 

AC 

JA 

cc 

BO 

PO 



CI 28 VERIFIZER (40 column mod*) 

000 rem • data loader for 'veriTizef c128' 

010 rem • commodore cl 28 «rtion 

020 rem • use m 40 cdunrin mode onty* 

030C8-0 

040 for J -3072 to 32 14 read x poke j.x ch-ch + x: nexl 

050 it ch<>l 7860 then print ' checksum error ' ; stop 

060 print ' sys 3072, 1 rem to enable ' 

070 print ' sys 3072,0 rem to disable * 

080 end 

090 data 206. 11,165.253.141, 2. 3.165 

100 data 254, 141. 3. 3, 96.173, 3. 3 

110 data 201. 12.240. 17.133.254.173. 2 

120data 3,133.253.169. 38.141. 2. 3 

130 data 169, 12, 141. 3. 3. 96.165. 22 

140 data 133. 250. 162. 0, 160. 0, 189. 

ISOdala 2.201, 48.144. 7,201. 58.176 

160 data 3. 232. 208. 242. 189. 0. 2. 240 

1 70 data 22. 201 . 32. 240. 15, 1 33. 252. 200 

180data152. 41. 3.133.251. 32.135. 12 

190 data 198.251, 16.249.232,208.229. 56 

200 data 32, 240, 255. 169. 19. 32. 210. 255 

210 data 169. 18. 32.210.255.165.250. 41 

220data IS. 24,105.193, 32.210,255.165 

230 data 250. 74. 74. 74. 74. 24.105.193 

240 data 32. 210. 255. 1 69. 1 46 32. 210. 255 

250 data 24, 32. 240. 255. 108. 253. 0. 165 

260 data 252. 24. 101 . 250. 133. 250. 96 



Bl 28 VERIFIZER 



EUzabetfa DmI. Mklvern. PA 



1 rem save ' tfOvenfizerbl 28 ' ,8 

10 rem* data loader for * verittzer bl 28 ' • 

20cs-0 

30 bank 1 5 for i - 1024 to 1 163.read apoke t.a 

40 cs - cs + a:next t 

50 (t cs<> 1 6828 then prtnt " • • data error • • " end 

60 rem bank 1 5. sys 1024 

70 end 

iOOOdata 76, 14. 4,165.251.141.130. 2, 

1010data141,131. 2,96.173.130. 2.201, 

1020data 17,133.251,173,131, 2,133.252. 

1030data 141, 130, 2, 169. 4. 141. 131, 2. 

1040daia 1. 72.162. 1,134. 1.202.165. 

1050daJa233. 32.118, 4.234.177,136.240. 

1060dala 32.240, 15,133.235.232.138, 41. 

1070data234 32.110. 4.198.234. 16.249, 

10e0data230, 165, 233. 41. IS. 24.105,193. 

1090data 208. 165.233, 74. 74. 74, 74. 24. 

1100data141. 1.206.24.104.133, 1.108. 

1 1 10 data 165, 235. 24, 101 . 233, 133. 233. 96. 

1120data164. 137, 133. 133. 132. 134. 32. 38. 

1130 data 32. 78. 141. 165. 133. 56.229,136. 

1140 data 170, 170.170. 170 



165.252 
39,240 

169. 39 

96,165 

27.133 

22,201 

3.133 

200.208 

141, 

105,193 
251, 
165,136 
186, 24 
168, 96 



InP 



oi 1 







Got an inferestinn p v fjgfm n mmg up, short nmune, or an unknown btt of 
Commodore iniiu SendHin - if we use kin the Btts column, weV credit you in 
the column and send you a free one~year*s subscription to The Transactor 



Using the WAIT Function 
For Screen Changes 



Frmncis O. 

Eugene, OR 



If you ve worked wilh graphics on the C-64 you know thai 
changes in sprite values, screen colour and bank selection can 
often look jittery. This is because you caught the raster beam off 
guard with your change. For nice clean transitions you can ask 
the computer to wait till the raster is out of sight before making 
the change: 

WAIT 53265.128 

. . .will stop your program until the beam is out of sight. 



LmI File nsed' update 



Dan Schein 
West Uwn, PA 



In the Bits section of Volume 7. Issue 04 (Jan 1987), Dave 
Newberry submitttxl a SYS statement to print the last filename 
used on a 64. Here are equivalent SYS commands for other 
GommodDre models. 

VIC20 SY563065 
C-64 SYS 62913 
Rys/4 SYS6I8I0 
C-I28 SYS627S3 



E«syC-l28Un-New 



Michael D. Paul 
Muiafleld, Ohio 



Eveiyone can always use a popam to restore and acctdcnialy 
NEW*d BASIC program. Here's one for the C- 1 2B that uses onty 
1 2 bytes and can be located almost anywhere. I store it on disk 
and use it by typing BOOT"UNNEWV 



• m SBOO :ciMtWr buffer 

IDA '$01 

LDY '$00 

STA ($2D).y ; pointer to start basic 

JSR S4F4F ; routine to rechain lines 

JMP $4F82 ; routine to reset to end of basic 

This should work regardte!^ of where the start of BASIC is. 

Printer output from an ML monitor David O. Rowell 

Marietta, NY 

It seems that the folks who wrote the excellent ML monitor 
programs for the C-64 forgot that a printer would be handy for 
many uses within the monitor. This omission bugged me for 
qufte a while before I gave in and worked out a solution. 

The following bit of machine code wilt allow you to toggle 
printer output on and off: 



PRINTER LDA #$04 
TXA 

LDY #$FF 
JSR SFFBA 
LDA #$00 
JSR $FFBD 
JSR SFFCO 
LDX#$04 
JSR $FFC9 
BRK 

SCREEN JSR SFFCC 
BRK 



;k>gK:at Ue number 

;device number 

;no secondary command 

;se! He parameters 

;no file name 

setriame 

iopen chanriei 

:logical U\e number 

:ass»gn default output device 

ireturn to monitor 

jClear channel 

;relufn to monitor 



This little routine has two entry- points: PRI^fTER to turn the 
printer on (as in OPEN 4.4: CMD 4) so that everything that 
would have printed on the screen now goes to the printer, and 



c 



M^^v ^^^Bffl 




■i 



SG%E£N to return output to the CRT. Decide where you want it 
in memory and use the assembler function o( the monitor to 
put it there - it'scompletety relocatable so it can go anywhere. 
Refnember the addr^s of the two entry points so that you can 
use the .G option of the monitor to jump to the fundioci you 
need. You may want to save it on tape or disk for the next time, 
maybe along with the monitor ttsdf * 



*Hlgh-Rea 128~ Video FU 



Quick Directory Hider 



Doug Resenbeck 
CeatraUA,IL 



A frief>d of mine. Bill Kir, came acrott yel another Iridc that can 
be done to the BAM on a disk. This routine of mine makes good 
use of his find When run, you are given the option to 'hide* a 
dindoiy from loading and listing to the screen or 'recover' a 
directory that has been previously hidden. One thing to keep in 
mind is that once a directory has been hidden or recovered, 
you won't beaUelo see the changed difedoiy unless you reset 
the drive or remove and re-tnsert the diskette. This is because 
thedrivekeepsacopyof the directory in its buffer Anyway, the 
program will hide any of your directory from being LOADed 
and USTed, but will not prevent any of the programs or files on 
disk from being accessed Is there any way to view a directory 
without recovering it first? Yes there is. Just load in the hidden 
directory, POKE 2076.50 and SYS 42291. Now tist the direc- 
tory. Have fun! 



P^. Please print nqr complete 
0.K Here it is. . . 

Doug Resenbeck 

Box 77 11 N-00592 

Centralia, 1162801 

rem directory hider - doug resenbeck 
1open15.8J5:Open2.8,2/#":pnnt#l5/ur;2;0;18;0 
:printil5,"b-p*:2;165 

2 print" 1) hide 2) recover ':wain98.1:Qeta:poke1 98,0 
:a « a- 1 ;rta<Oora> 1 then2 

3 if a - 1 then a - 50 

4 pnntf 2,chr$(^ ;prinLf 1 5/ u2 ' ;2,0; 1 8.0:ciose2.close1 5 



Erik J. Palm 
Rockford, IL 



Paul !• Ourrants program. 'Commodore 128 High-Res 
Graphki" , is a wonderful utility for 1 28 users who wish to gain 
an extra 16K of storage or for those who want to exploit ttie 
I28*s esctra screen resolution (Volume 7. Issue 2. page 72), 
Rnders with newer model I28's may have noticed a flashing 
vertical line on the far right ol the SO column display when 
using this program. This occurs because of a minor chip 
modification at Commodore. Tliere is a simple fix however. 
Just change: 



To: 



00BC9A9 80 LDA#$80 



00BC9A987 LDA #$87 



LiUle-Knnwn FeatureA of DOS 



Gavin Bell 
aii,NJ 



Commodore DOS has some nift>' features that Commodore 
doesnl tell anybody about. For example, both the directory 
command (I) and the scratch command can take multiple 
arguments, separated by commas. Fur example: 

Open 1 5.8. 1 5. * sO green.blue.frog.???.!* ' : close 1 5 

...will scratch the files 'green', *blue*, *frog', any files 
with threes-character names« and any Tiles with names startii^ 
with the letter * t V Similarly. 

load'$avb*\8 

. . ,will load a directory containing all filenames beginning with 
either 'a' or ' b' . The number ol arguments i:^ limited only 
by the 40-charactef command length limit, and any kind of 
pattern- matching and drive spedfication witt work as ex* 
pected. For example* 

"sO test,! tester' 

AS a disk command will scratdi 't^* on drive zero and 
on drive one ol a dual drive 



Editing In the C-Power Shell 



HcrbHAaler 

Guelpb, Ont, 



Here is a tittle information ttiat might be of intami to people 
who are using the C-power pack<^ for the 64 fn^m PRO-LINE 
software. One complaint about the shell is that you have to re- 
type cxMnmands that have been mis- typed. This* however is 
not the case. If you make a t>ping error you can cursor up and 
correct it, but don't hit RETURN just yet. Move to the line above 
and hit RETURN to move the cursor to the corrected line, then 
hit RETURN again. The corrected line will then be executed* 
This may save some readers a bit of frustration. 



The Amazing 1660 M 



Kevin Kleca 
ConMRavilJc. PA 15425 



One piece of Commodore hardware is ttie 1660 modem. One of 
the unique features of the modem is that you can make it do 
tor^ dialing by generating the tones with the StD chip the way 
you would normally produce sound through your TV or moni- 
tor. Many people don*t realize that any sounds produced by the 
64 while the modem is 'off-hook^ will be sent over I he phone 
line. This opens up some interesting possibilities. With a 1660 
modem and some sort of speech synthesizer like S.A.M., you 



mi very easily turn your Commodore 64 into an aimvertf^ 
rrachine. Jusl ui^ the sJiurt program below with your speech 
picfcue and your 64 will answer away! It can pa.^ily be chanf^ed 
Id take the time of the caJl, or do whatever tim you wi&h 
Maybe it you*re good with electronics, you could connect a 
voice recognition system to the modem and have it answer or 
digitus the caller response! When using the program, make 
sure your modem ii Ml on ANSWER, not ORIGINATE. 

90 0^-56577: hi-32:lo-255-32:c-0 
100 print pf*nt' waiting forcalL . ,* 
1 10 (1 (peek(oh) and 8) then 1 10 
120 poMo^ + ?).(peek(oh + 2) or hi) 

: poke oh.(peek(oh) and lo) 
130 print ' phone nngrng. now artswer ing, . . ' 
140 rem insert connn\ands for your speech program here 
1 50 rem with the speech that you want the callef to h< 
160 poke oh.(peek{oh) or hi): c ■« c + 1 
1 70 print ' calls answered. ' c 
180 goto too 



bier Start-yp Code 



Andrew Walduck 



Bit Correction: DOS Wed^e 



Robert C. Kodadek 
Aston, PA 



In the Bits column. Volume 7. K^ne 4, reader loel Pickett wrote 
in to say thai the DOS wedge prc^ram supports only one 1 34 1 
drive Actualfy. the DOS wedife (verskwi 5.1) has a command 
for changing the device numt>er - the ''\ The proper syntax fcir 
the little-known command is: 

Oi(device number) 

For example, to change from de\ ice 8 lo device 9. the com- 
mand is: O*^' The use o( this command is certainly easier than 
going to the trouble to change the loader program and having 
lo remember to POKE address 52343 with the current dc% ice 
number. 



Correct Ion: Format Tmrk 36 



Thomas E.Callse 

Brick, NJ 



1 have found an error in Mr. DA Hcx)k s program (format track 
36) that was published in the September 86 Transactor. Alter 
running the program and chocking the extra formaltcd track 
for errors using the 1541 SuperKit Super Scan. I continuously 
came up with a *20 read error for sector '16. Upon inspection 
of the code pccsented in his article, t realized that the \%Tong 
number was being dored in kx:alk)n S43. lu^ead o( a $10 it 
should be a SI 1 . To correct the situation, change line 1020 in 
the pfopam to: 

1020 data 141. 34. 6. 169. 17.133.67.32 
After the change was made; ill sectors checked out properly. 



HereiiiOineaaBembier code, in PAL-compatible format, that t 
use as the start of many of my programs. It makes a program 
thai can be LOADed and RUN like any BASf r pr* >gram. and the 
user doesn't have to remember a SYS command to get it going* 
When the program is loaded, it will appear as the BASIC line "0 
SYS 2062 \ and when am, control will be paned to the 
machine code thai folkiws. 

too open 15.8.15,*90 program name' close 15 
1 1 open 3.S.3, ' 0:progranrr name. p,w * 



120sys700 
130 opt o3 
140*- $0801 
150 worSOSOc 
160 worSOOOO 
170 byt$9e 
180 asc * 2062* 
190 bytSOO 
200 .worSOOOO 



;start up pal 

;output obfect to disk 

;put program at start of baaic 

;hnK address 

;line number zero 

;token for sys' 

;ascH literaJ for sys 

;6nd o( basic bne totaan 

;end of t>asic program 



210: 

280 ;your source code should start here 



C128RS'232Biigs 



Albert J. McCann, Jr. 
Glenoklem PA 19036 



There are two bugs in the Commodore 128 in the RS^232 
routines that interfere %^th 1^232 operation Both bugs have 
to du wiih the carr> flag in the 8502 being &et to the wrung :^atc 
upon exiting the routines. 

The fir^ bug is in the ' BASIN " code tor RS^232 input. The 
code is as follows: 

EF65 CLC 

EF66 RTS 

EF67 JSR $EEFD get rs-232 byte 

EF6A BCS $EF65 ;exit ff carry set. txanch to wrong loc. 

EF6C CMP #00 ;null 

EF6E BNE SEF66 ff valKJ char, exrt carry set as a lesiA 

;of compare. brarv:h goes to wrong 

location 
EF70 REST OF CODE 

The changes needed lo make this work are: 

EF6A BO FA BCS $EF66 
EF6E DO F5 BNE $EF65 

The second bug is even nastier. It is In the RS-232 OPEN 
routines and prevents opening an RS-232 'X-UNE' hand* 
shake channel. The following open stat«i>ent will work on a 64 
tHJt not on a 1 28 because the 64 Ignores the carry flag. 



L 



WUj p^^pf* 



OPEN 2,2,0,CHR$(6) + CHR$(1):REM 300 BAUD, 
FULL DUPLEX, X-LINE HANDSHAKE 



'■- ^%i^k T^ t*'i » ■ Tt 



*\ 



^ ^ 



When Ihis executes, you will get random errors and it will stop 
a BASIC program- The code is as follows: 

F094 LDA $0A11 ;rs-232 command reg 

F097 LSR A ;bitO to carry 

F098 BCC $F0A3 ;branch if 3-line rs-232 

F09A LDA $DD01 ;checkifdsr missing 

F09D ASL A ;bit7tocarry 

F09E BCS $F0A3 ;if input pin is not connected, or else is 

" high " then carry = 1 , dsr is " true 
high" at this point 

FOAO JSR $E755 ;set status variable to indicate dsr Is 

missing, input pin is " low " . this routine 
clears carry so if you ground the dsr 
input pin then the above open will work 

F0A3 REST OF CODE 

+ 

FOAF RTS 

There is not enough room at this point to include a CLC 
instruction so 1 jump to a patch. The code to fix this is; 



.1., ., *- » 



FOAC 4CF3FEJMP$FEF3 ;jump to patch 

FEF3 8D1A0ASTA $0A1A ;original code 
FEF6 18 CLC ;this is added 

FEF7 60 RTS ;exit 

These changes were put into a 27128 eprom to replace the 
KERNALromin the 128J use Promenade which works nicely 
in 64 mode. While you're poking around the KERNAL making 
fixes, here is one that is unrelated to RS-232 but bugs many 
people: 

FC22 D1 

This fixes Caps-Lock Q. Also, to replace the KERNAL rom in 
the 1 28, you will need two computers: a 1 28 and a 64 or second 
128. The reason being that there is 4K of invisible rom {Z-80 
code}. This is not accessible from 128 mode. The KERNAL rom 
is chip U35. You must remove this chip and read it into the 
second computer through the eprom programmer. Then you 
can modify the code and send it to an eprom. 



Using The C-128 System Vector 



Jfc 



-^ *;- ' tC 



David Mora 
San Jose, CA 



I I ■ .*-r 



The C-128 has a very nice feature for programmers. In $FFF8 
and $FFF9 of RAM bank 1 is a useful vector called the 'system 
vector*. After the reset button is pressed, control is passed to the 
routine lying at the address in this vector For example, to 
automatically enter the monitor after a reset, run the following 
program. 



m*iM'i(; 



10 rem reset-controller 

20 bank 1 

30pokedec{"fff8"),0 

40pokedec{"fff9"),19 

50fori = dec(M300")todec(N305") 

60 read a; poke i,a: next i 

70 data 32, 132, 255: rem jsr$ff84 

80 data 76, 0. 1 76: rem jmp $b000 

The first thing the program does is restore 1/0 by calling (OINIT 
at $FF84. Then it jumps to the monitor. This vector has many 
uses, for example making a Yeset-proof program, or with an 
un-new routine to restore any basic program in memory. 

Note to David Mora: we can't find your complete address! 
Please give us a call so that we can send you your free 
subscription. -CZ 



Moving Tlie Cassette Buffer 



John Tellefson 
Salina, KS 



The following tip applies to VIC 20 and 64 users who use tape 
for storage. It may apply to other Commodore computers. 

Many small utilities such as "Verifizer" are written to run in the 
tape buffer, and any tape operation clobbers the utility. This 
can be avoided by moving the tape buffer - in the VIC and 64, 
the buffer is located by addresses 178-179, and the system 
doesn't mind if you move it. It is 192 bytes long, and you can 
put it anywhere in free RAM as long as it doesn't overwrite your 
program, variables or ROM. If you only SAVE and LOAD from 
direct mode, it doesn't matter if you overwrite variables, since 
they will be cleared the next time you RUN anyway. Here is a 
sample code fragment that moves the tape buffer to 192 bytes 
below the bottom of string storage space: 

a = peek(51) + 256*peek(52)-192: poke 179, a/256 
: poke 178,a-256*peek(179) 

(if memory is tight, you may want to check 'if fre(0}>l 92' before 
doing the above allocation). 

An extra advantage: With the tape buffer moved, you can put 
code in the tape buffer's normal place and save it to tape with a 
monitor. You can then load the program in and use it at its 
intended location. 



Reset and Run 



Noel Nyman 
Seattle WA 



Here's a way to have your favorite BASIC program availa- 
ble at the push of a button without building the hardware 
described in "064 RAf^ Cartridge" (Volume 7, Issue 4). 
Make the following changes to listing #1 on page 52: 



:• t •'■^ 



MM 



TheTtantoctor 



May 19a7; Vokane 7, l»(ue 06 



Change the file name m line 1090 to ' Onocarl * . 
Change the end Ol loop in lifw 1 1 1 to 33008 (from 32999). 
Change the checksum m line 1 1 20 to 29267 (trom 28345). 
Change line 1290 to react 

1290 DATA 198, 76, 232, 128. 56.165, 46.229 
Add line 1291: 

1291 DATA 0. 0, 169. 128, 133. 56, 108. 2. 3 

Run the modified loader to create "nocait" on disk Then use 
"nocart" and folluM ihe inslmctions in the article to store your 
favorite BASIC program in RAM above 18000. Then enter the 
command: 

POKE 56,128 CLR 

This protects Ihe RAM area above $8000 from BASIC string 
variables. The code you added to the loader will perform this 
hjndion again whene\'er your stored BASIC program is RUN. 

Using SYS 64738 or hitting a reset swltcfi will RUN the stored 
BASIC program, just as if it were in a RAM cartridge. The only 
ditfcicncc is that the program is wiped out when the computer 
is turned off. 



Border Anlmallont 



Terry Montguniery 
Walls. MS 



Ever in to dispiay miylhing in the screen border? Other than 
chaniiing the cnfmtr, it^ pretty hard lo get the border to do 
anything exciring Thii machirte language program front Terry 
Mutagoniery. however, wdl put a colourful display in your 
screen borders that you never thought possible' Not only that, 
but thepajgram is interrupt -driven, meaning thai you can edit 
and «*" run most BASIC programs u>hile the display con- 
tinues. A great uddiiiun to your "Gee~Whiz" collection. 



Li 

KG 
DH 
GK 

EC 
El 
AF 
IN 
Ki 
MJ 
DB 
DA 
GO 
KN 
IK 
KJ 
AA 
OE 
DN 
HM 
NJ 
CK 
MO 



1 rem* data loader tor ' colour bars ' • 

20CS-0 

30 for i - 49152 to 49394 read a:poi(e i.a 

40cs-cs + a:nexti 

50; 

60 it CS029666 then print * ?data er rod " 

70 rem sys 49152 

80 end 

100: 

1000 data 120, 169, 127.141, 

1010 data 141, 26,208.173. 

1020 data 141. 17.208.169. 

1030 data 169. 192,141. 21. 

1040 data 18.208, 88. 96. 

1050data 1 208, 3. 76,101.192, 

1060 data 141. 25,208.172.176.192. 

1070 data 192, 141, 32. 208, 238, 176, 

1080 data 176, 192. 236. 177. 192. 208, 

1090 data 104, 192. 162. 0, 142, 176. 

1100 data 17.208. 41,127.141, 17. 

!110data191,192, 141, 18.208,173. 

1120data208, 3. 76, 49,234. 76. 

1 1 30 data 238. 1 78. 192. 1 73. 1 78, 1 92. 

1140 data 176. 14.160, 0,185,204. 



end 



13.220, 

17.208. 

36.141, 

3. 169, 

173. 25. 



169. 1 

41.127 

20. 3 



208. 41 
169. 1 
185.179 
192. 174 
8. 32 
192.173 
208.185 
176. 192 
188,254 
201. 15 
192. 153 



pp 


1150dalai91. 


192,200,192. 12,208.245. 96 


CN 


1160 data 173, 


178, 


192,201. 30,176. 14, 160 


PG 


1170 data 0, 


185, 217. 192. 153, 191. 192. 200 


GA 


1180 data 192. 


12.208,245. 96.173.178.192 


HN 


1190 data 201, 


45. 


176, 14.160. 0.185.230 


EO 


1200 data 192, 


153. 


191.192.200,192. 12.208 


GO 


1210 data 245. 


96. 


169, 0.141.178.192. 96 


GJ 


1220 data 2, 


12. 


33. 6. 9, 5. 1. 12 


lO 


1 230 data 8, 


4. 


2. 7. 0. 14. 6. 50 


AE 


1240 data 55. 


60. 


65, 70. 75, 80. 85. 90 


EN 


1250 data 95, 


100. 


105, 40. 50. 70. 90.110 


PN 


1260 data 130. 


150. 


170,190.210.230.250, 14 


GO 


1270 data 40, 


50. 


60, 70. 80, 90.100.110 


IC 


1280 data 120, 


130. 


140.150.160.170. 50, 55 


GG 


1290 data 60, 


65, 


70, 75. 80, 85. 90. 95 


MF 


1300 data 100, 
Izer ftnd 


105. 


110 


Vertr 


Mike lafrate 


FmI- 


Load Ctu-tridgct 


hrkersburg. ^^T 26101 



I was having trouble using the Veririzer for the 128: when I ran 
the pfograni, sometiniesi il would work, and sometimes the 
monitor would break in After some trouUeshootljig. I found 
that \h*^ Machi 28 fast kkad cartridge was cau:»ing the problem. 1 
have Luijie to depend on it so much that 1 often forget that Et Is 
there and usually have no problem with most of Ihe software 
that I use. 

Here Is the problem as rar as I can determine. When 1 use the 
cartridge to load a program, there are two symbols thai are 
sut>slituted for the LOAD command: a slash, and the up-arrow. 
These use some type of an interrupt that sets the Z-Aag and the 
B-f(ag in the status register I haven't seen loo much written 
about the B-flag (break flag). Anyway, when I remove lt»e 
cartridge I find that the status re^ster returns to zero, and then 1 
can load and use the verifizer normally, h's no big deal to Rx 
the problem; I just add this line to the program: 

1080 poke 05,0 end 

If anybody else is having problems using Verifizer 128, maybe 
this will fix the problem. 1 am sure there are a lot of peopte 
using Ihe Mach128cartri<^. 



Amiga BIta 



141 The Vanishing Workbench 



Did you ever slide down the screen of some applk^tkm, 
expecting to find the Workbench screen patiently awaiting 
your return, only to find th^ it had vanished? This happeru 
when an application doses the Workbench screen in an effort 
to save memory. Examples of programs that do this are ABasic 
(the original BASIC shipped with Amigas). and Deluxe Music 
from FJertronic Arts This may be a fine way to save memory, 
but lite can be difficult with no Workbench screen * it makes it 
impossible lo run anylhing else until you exit your program! 
Fortunatdy. Ihe system won t let an>x>ne close \Uv Workt>ench 



screen if there am any windows op«n on tl. So, ii you waiu lo 
make sure you don't lose your screen, bnng up a window 
before you Imnch your Workbench^losing ^>plica]ion, A good 
tandtdate lo have up is a CU window, since you'll probably 
want one around anyway for doing disk operalkina from time 
to time. 



Ung TTie Low Memory Blues 



If you can't bring a prugram up because you're running low on 
memory, try donng as many windows on the Workbench as 
possible. You can dose every window on tteiereen. even the 
one containing the program you're trying lo run, by draggjng 
the program's Icon outside the window onto the Workbench 
screen (actually, backdrop window) itself. Once you do&e up 
everything you can, you can launch the program by double^ 
clicking the icon as usual. Make !Hjfe you eventually drag the 
icon back into the drawer tt cime from, or lt*U disappear from 
the disk forever. 

If you want to keep aome windows around, you can minimize 
the memory consumed by making sure they don't overlap If 
you re totally doperale and absolutely need a few mure K, yuu 
can always unplug your second drive (i( you have one). aiKl re- 
boot. If you don't have the internal 256K RAM expansion 
module, get it. If you can aflord to. get more - it s amazing what 
a few extra Meg^iytes can do for Amiga* 



Modifying The EpMn Printer Driver 
To Work With OthiT Printers 



Peter Inak^i 
Long V alley, NJ 



I use the Scribble* word proccMor, version 2.0, and a Gemini 
Star lO-X primer If Epson is selected as the pnnter through 
Prefciences, many of the printer commands work properly on 
the Start lO-X. One command that do^ not work is the 
paragraph return, as wuutd be the case %tfhen putting a space 
between two paragraphs. Invariably, the printer will skip not 
one, but two lines, before slatting the next paragraph. Scribble! 
is not aware of tins extra line skip, so it does not add the extra 
line when calculating where the end of the page really b. The 
more blank lines t)etween para^aphs, the more the program 
gets out of line at the end of the page. 

Creafing a custom prinler-driver is a formidable task. But. if the 
Epson pr<^ram is be modified only slightly it can be made to 
work well with the Star 1(>-X t used the 'Edit" program on the 
Work Bench disk to make the modification directly to the Epson 
pnnter driver. 

The Epson primer driver is k)caled with all the others in the 
"devs/ printer" directory. Using the commipd, "type dfOdevs/ 
printt-r/i*ps*in opt h ' from CU tt) display a hex dump of the Tile. 
1 kx:ated the characters thai controlled the linefeed br the 
pnnter^ This was al location $0430 (hex), where the charactefs 
mdaifulluws: 

$0430: OOOOFFOO OAOOODOAOOOOFFOO .... .5.- 



The (^rrii«e return /tinefeed at $0436 and $0437 (in bold 
above) were causing the double-skip In prefiaranon tor sur- 
gery, the nie was copied to a new file called "Star" on a spare 
disk. 

Edit was then invoked to make the correction. Because some of 
the "lines" in the file were very long, it was neoeasary to specify 
the unusually long line length to Edit, or the lines would be 
truncated and the file corrupted. The Edit command used was 
"edit star c^t p65w550 ". The OOODOA combination was found 
in hnes 12 and 13, Line 12 contains OOUD. but only the 00 
shows if the ' F-dit command is used. Une 13 contains only OA 
(you can t see it. since its a linefeed, but it's there). Line 12 was 
deleted and replaced using the cDntrol-2 and contrd-j keys. 
Here are all the edit commands required: 

113 

CTnL-2CTRL-j 

Z 

The fnshuctions for using Edit can be found in the AmigaDOS 
manual. Since the control-2 and control-j key combinations 
are non-printing, you will not see anything bc'ing added, but 
)'ou are puiting Ww two chancters OOOA into the tile. 

line 13 was ddeted. because the OA at S0437 was realty the 
bug for the Star IQ-X. This left the file short one character, so 
00 was added at the beginning of line 14 to put OOOA at 10436. 
To add the character to the begitmmgol the line, before theOA, 
a substitute null string command was used: 

A//CTRL-2/ 

After FAW was wound up, the newly edited Rte "Star" wai 
checked lor size with tht.^ list commaiK] to make sure it was the 
same size as "Epson". TVpe star opt h* was used to see if the 
changes had been made in the right place. The correcled file 
read as follows. 



$0430 OOOOFFOO OAOOOAOO OOOOFFOO 



.5.- 



'*Slar** was then copied to the Scribble disk (copy ^ar to 
M nl>bl el /devs/ printers). Preferences would recc^ue the new 
printer file, but for some reason Scribble! declared "no printer" 
when the print menu was selected. To keep Scribble! happy, I 
renamed "Epson" to True Epson", and "Star ' to "Prison". 
After that, there was no problem. 

Although I have not done it, I assume that many of the printer 
drivers could be similarly mtxfrfieil It took patience to figure 
out how to use Bdit, eqwcially with non-priiitir^ characters. I 
put the whole mess in the ram di^ ("ram:") while I experi* 
mraltd, which made all the trial and error go much fMer 

By the way, I am r^ly enjoying Scribble!. Micro-Systems sent 
the Scribble! 2.0 upgrade, with the spelling dictionary, as soon 
as it was av^lable, and enhanced ScribbW at the same time. It 
was a real bargain^ because there was no charge k>r I he 

upgrade. 



£ 




Letters 



^gftahf oimoit from readen who hamverysped^ questtims 
about ihetf Cunmnxiure and thtfd-party equipmeni, Many of (fwse 
mw inferfocinft />Fr>Memt of one kind or am^fter whkh soUwarr 
Witt w€^k u tif} my modem 7 Houf can / get my pnnter and my word 
processor io woHt tot^ether? How come my system won} had fifom 
<Mv /J noaf tf}Qt f\v tnstaihd a klagK ShmiMt^tmf Expander box 
on my gome port? 

These kinds of questions are often impoesAle io amu rr unlas you 
fH3L>e specMk e xp e rm we wkfi tfie partkuiar equifmieni cur^igunh 
tion iniiofved. Since we don i fiave every imaginable piece of 
equtprmm on the market, we *fe ofien feft ecroti htng our hvads for 
ofepiy, 

Ybu, on tf^ other hand, may have mcentl} di^<^*ji^red tfw twces^ 
$ary iTKantatkins to make Hte Magk Shmocftml box work w^h 
your disk dnves, and U4>uidjust Jbcv to share your discoi^ry with 
the ITS/ of the worid That s ahai //ji^ next bunch of kOen are ail 
about Retxi them over ' see ff yoii can hetp We'd tove to hectr from 
you, and mj u<Mjid the authors of these queshtHis. 



Angling for weird pwtK Became of a sliff cord on my (repti 
mem!) power pack, and a lu of movemciK of the keytxNird b>^ our 
four users, iKe power receptacle broke its solder pints to the PC 
bcwd. A iimple removal ol tlie PC aMCtnbly. liiUitg ad the RF 
shtdd and careful rankk-ring have cured the pfobtoin. However it 
could have been worse, and that leads me to the following sub^. 

I tried to locate a 7i>in DIN male t^ temaic ri^t angle ada^er so I 
could lead my power cable out the rear of the board. This idea 
carried over to also Irving to murce an angle adapter lor the rear 
serial receptacle on my 8Ul printer (the cable interferes with the 
paper feedV My Intenfion was to fasten these lo the cases so flex 
loads would be taken b>' the easily repaired curds. 



I could not find a supplier in this arcA f2S0 km out of Vancouver). 
Could you &ug|nt a supplier ol the following items I would like to 
purchase: r^ht angle DIN m/f adapters: longer serial cords or m/l 
serial cord extenders; a ilmpie inexpensive modem 

Doug Hurd. Pentkton, British Cdumbia 



Yet another request for Urdu software: ) have been a regular 
subscriber to The Transactor for the lastf two years. I have own«J a 
faithful C-64 for the lasi four years' I have recently seen an Arabic 
version of a word proceaor ttiat is on a cartri<%e that converts the 
C^ to an Arabic laniftiage ooniputer. 

I am iniemled to krxw if there is any such software lor the Urdu 
lanftuage avaifabfe^ I would be grateful loany Transartor readers 
who could provide me with inlornianan on such a product. 

M. Sharif Butt. Makkah. Saudi Arabia 



I 



€^^€4 Numerica: I enjoyed the *extra* langiiaj^rs ivqje. e^ndally 
lheberKhm<irks 

What numeric cakulatlon software oivlronmenfs exist tor Com- 
modore 64? Any publn' domain stufP 

The ^Apple Numerici manual' (tSBN 17741-2 Addlson-Wcsley) 
describes SANE, the Standard Apple Numerics Environment, 
which runs on the 6SU2 microprocessor in assembly language Has 
something like thi<t been written lor a Cbmmodore system? 

''Interactive Simulation Language*" (Interactive Mini Syiitems Inc.) 
with the "BU!P3 ■ compiler i^ available lor Commodore fri It 
includes modules Uh solving non-linear differential equations. 

I bought something from Dynacomp written in BASIC with no 
error trapping and clumsy plotter routines for C64. Runs, but not 
what I'd hoped to ftnd. 

Edward Connors, Frederfck, Maryland 



Remote line reeda: I have en^ed The Transactor for many 
taues. especially Netuvorking and Commujilcatiom. The program 
I would like to refer tu ii Remote S4. 

After changing Tfi to in line ? 000 to give full duplex transmission, 
thisbrcHjght my non-Commodore lermmal to lifeand I can mierad 
with my 64 remotely. 



i 



*UM plots: i am wondering if anyone has rtoticed any bugs 
In the 1 520 plotter when attempting to plot in relative coordinates. 

It - ^ that when the pen carriage is at certain x (horoontal) 
pOMtKiiis, the first T sutxommand after an *i* setids (he pen o0 to 
the absolute origin inslMd. To curt- ttu-b, it i^^ neeeaury to insert the 
apparently redundant subcommand PRINT* I. *R\OA after 
PR1NT*I/I\ 



The 1520 

comeaooit 

mine. 



to be a rather unpopular penphcral jnd 1 haven't 
another unit to test whether all tme this faUk or just 

Midiael Seman. South Perth. Western Australia 



The only problem is thai my remote terminal expects a 
(chrl(10)). and unless my programs are modified to give one. the 
lenninal will just write o\*er the same line. Program and directed 
lists seem impossible. 

Is there a simple method to send a linefeed after a carri^fr ictum 
b>' modifying Remote 647 

This problem has been giving me many ileeptoK nighte and an 
answer would be appreelated. 

Tim Ra>'wortli. Kenlville, Nova Scotia 

Put away tflose sleeping pi^ Tm. and odd the hffouimi tina to 
the Hemoiv 64 mxuct flte 



1075 pha 

1065 pto 

1066 cmpf13 
1087 boe •♦7 
tOBS kto #10 
1069 fir normou 

Krmaf revision trillion: ft almost brought rears to my ryes to 
w» Tony Doty^s arbdii *Ai]lo CMniJt tor the C64' in Volume 6. 
Imic K Not o4 ladneii. though > the two Hies' he describes cure 
two of the tiKMl inravatinf] features' ol the €64. ! have been 
runnmg my own EPROM Kermt revision tor two yean now, 
ifKorporaiing not only thofe revisions but a number of oHmn. 
However, at this rtage I offer two poinii of comment on Tony's 
aiiide. 

K The default device number occur* not only at SEIDA but also at 
%E22%. the latter ifhcting the Kernal OPEN. I am not sure of the 
imfdicatlons of leaving this aa t, but to be sure I dianpd it 
anyway. 



2. Use of the RUN key (i.e. shifted RUN /STOP) leavci the text in 
the input buflo^. A 'normal' BASKT prografn with a GET or INPUT 
from the keyboard beiore any other i/0 will find this text unksa 
deafedbyaPOIC£l98.0. 

Taking Tony s point on default device one step further. I found that 
over 90 per cent of kx'al C64 owners, and even mom ami>nff noch 
gimen, do not use cassette at ail! As one of that large majority, 
some 1 MK of Kernal was liberated b> declanng device t as illegal. 
and intercepting all attempts to referance it. This penniMl tiig 
flexibility to carry out some nKher extensive nrKKjificatians^ include 
ing integmkin o4 the DOS htanager in the Kemai. thereby avoid* 
ing some En»npatihitlty pniUaais and saving the hasile of 
toading at each powernip. 

While on the subied of the DOS maaafv. k is interesting lo 
consider the impact of the CHRGET-wedge technique. In effect, all 
input, including from disk, Is scanned by additional code designed 
to interaepi DOS commands. The reaulting depadatkm of an 1/0- 
bound program is massive. As a quick sottMion. always disable the 
D<K manager (Q) before running your programs if they are heavy 
on disk input It can always be resuidtiled with a SYS call, 
although this is an introverted procedure * the CHRGET code is 
being executed when the SYSed code is changing the CHRC^T 
code! This awredly laimtaiBa the iwedae, but it also results in a 
SYNTAX ERROR, although this is of no importance unless yon 
intended to COhOlnue the program * the error blocks continua- 
tkm. Such wedge techniques are 'quick and d\rty\ The elegant 
^iplMdi is 10 intercept the error handler via theMOOO vMor. and 
check for valid DOS commands before treating as a genuine error - 
the tame appeoadi aa is used for many BASIC extensions. 

Petvr Morgati. Leamurdie. Western Australia 

Eawttidnipptng on modems: Please let me take this opportu- 
nity to thank you for a truly informative miflifrinr Many of my 
projects, programs and most of my experience is directly related to 
the artidea you ham published. 

llib letter was inspired by a couple of articles concerning modami 
ill recent mjg of the Transactor. 



1 use a Pocket Modem and a terminal program ctfM Dark Term 
on my C64. Both the modem and ttie terminal pfogram have 
auiod^ capability, but they are unable to sense a busy signal, 
ringing phone, or an answered voice signal This meant that I had 
to monitor the call by hokluig a tdeplione to my ear. Many are the 
headaches caused by a delected carrier. I have oveicome this 
annoying problem ^-ith hvo items found in a local Radio Shack 
store. The first it called a f^hone Pickup Coil, part number 44-533: 
the second ts called an Audio Amp/Speaker, pait number 277- 
1006. 



The phone pkrkup coil is normally connected to a tape recorder 
and then fa^ened to the telephone handset via a rubber suction 
cup. lo allow phone convenanons to be recorded. However, when 
connected to the Audio Amp/Speaker, the phone conversations 
can be heard without iHening to the triqihone handset. How, if 
the pickup coil is placed on the front right comer of the Pocket 
Modem cue. and (he modem is turned online, the speaker will 
broadcast the dial tone, or the telephone conversation, just like it 
did with the telephone Thb mean& that 1 can now use my modem 
and term program without having to hold my telephone to my ear 

I use the above sehip every Ume 1 use my modem. With it 1 can 
check for Mlowingi 

1 ) A dial time y^hen 1 firy turn on my modem. 

2) Listen to how my niKxlem dials the phone number. 

3) Usien for the phone to ring on the other end. or know immedi- 
ately if ihe line IS busy. 

4) I can hear the other computer send Us carrier ilpia! and tell if 
my computer hAs answered it 

5} If I don't get an answer alter three rings 1 hang up and check the 
number. 

6) If I should dial a voice number t will hear rhem on the speaker 
andean then pick up the phone and explain or apologlie. 

7) When t am uploadtng or downloading. 1 leave the speaker on 
and listen to the data being iransfened. I have fcxind on a 
number of occasions, when my computer myHehously kxrked 
up while uploading, that the problem was caiiaed by the BBS 
hanging up on me Without the pickup coil and ^leaker ietup, 
or holding the phone to my ear. I never would have figured out 
ttie cause. 

I have installed the pickup coil semipermanently on my Pocket 
Modem with adabof hot glue (Crazy Queor Epox>' will alio work). 
The Hot Que can be peeled off, and it lea- ,o marks if I should 
deckle to sdl my modem. Also instead of removing the rubber 
suction cup I turned the coil upskle doim: the coil will still work. 
and one day I may figure out a use for the mdion cup behind the 
computer. 



The coil and speaher should work on any type of modem. Comwd 
the coil to the amp/speaker, turn on tfie modem and pass the coil 
mm the modem caae until the dial tone is heard It will be 
neoasary to experiment to find the kwdot signal and then jiot 
glue the coil in that spot. The beauty to this setup is that no 
permanent mocHBcations are necessary to ihe computer modem 
or pfione lines. Also, there b no way you can dam^ the 
computer or modem, or mess up your phone servke. The only 
disadvantage to the system is that the coil will pick up a hum if 
placed too ck»e to the monitor or TV. 



^^mmm ] 



Note: M you arr curiou'^ about why people have trouble with disk 
drives and Datasetles whfm placed on the l«lt side oi ttie murutur. 
jii&t pass Ihe cuU by the left side oi yuur monilor and Jisteii. I wtHild 
yoy kMp the volume turned downt 



Perhaps the nealot thing about this project is the price. The 
pickup caj[ com S2. 1 9 and the Amp/Speiker is worth $15.95 at 
Radio Shack This qieiker and coil mudifKatMi is a kti like my 
Fastload Cartric^: now thai I tiave used it, I won^l leave home 
without it. 

I hope that thh pft^ect will prove as useful to you as it has to me, 

Kevin U'mun«St. Catfianttes, Ontario 



IEEE for C- 1 28; In responiie to your query in the March W issue 
about whet^ier there is an IEEE interface lor the C-l 28: there is. . . 
the Quit kMtver 128 from Skylen Electric I have been itting one ol 
tboe fur about two months on a C- 1 28 e(|ttippcd with a Hewlen- 
Packard Thinkfrt printer and 7470A two pen plotter. The device 
plugN into the expansion [Km and requires repiacenit'ni uf a ROM 
and attaching a jumper clip inside the computer. An imporlajit 
feiture Is that thb unit also works with rhe C-128 running in C-^ 
mode. 

Unlike the older BittCard IT for the C-^. thb inlertece does not 
have a built-m monitor ur enhanced DOS commands. Although 
not rteeded lor 128 mode, tliey are really miswd in C-64 mode. It 
also does not have a parallel primer output 



As advertised, the Quicksilver seems to be fully tninsp>arent. 
However, one bug exists if it is to be umhI in C-£4 mode. If you turn 
on the C- 1 28 and GO 64 inimediatdy. yuu will nut be able to 
the IEEE bus in C-64 mode. The solution i^ to open and 
any IEEE device while p.iv.ing Ihrough C-128 mcxle. This 
could be bandied with an autoboot disk routine in final versions of 
applktttl(»n programs. 

John A. Spcncift, Edwanbville, Illinois 



foot is in the poor support they have given their distributors TWo 
ItKal outlets have said ihdl i\w\ will never deal with Commodore 
again, t leallae ttidl this is a holdover from the Tramiei era, but the 
current superstnicture al Commodore does not seem to have 
addravecj this prolilem adequately. Also, Commodore seemingly 
does not know how to win the press* Ttie PC caught on only 
becauteoftbefamUiar three initials The comfNMer pre» followed 
a familiar trail and it eUablislted a **mmim6** with a poorly 
designed machine. But stxress breeds suocew and the press 
seems jntent on bur>ing the name ComnuxJore. Granted that ttte 
nimuured 150,000 uiMUed systems may nut exate si^ftware 
developers, some good and effective PR effort on the part of 
Commodore devoted to the seemingly hostile part of the computer 
peoi could ellect a drastic ctiange. It would not be easy but it ijuuld 
be vital. 

One footnote to my first point; the recent rumour that Commodure 
has abandoned the Amiga 1000 as of the first d the year in favour 
ol the '*2000' and a 5i»0" does nothing to inspire confidetKe in 
those of us with the 1000. Thb tactk seems to have been taken out 
ol IRM\ manual uf deserling the byal customers. 

Rev. Fr J. Paul Morris, Long Beach, Califurnia 



ihtvugh ihe verttgo you get when you nnjve up to the Amiga from 
the S-bi tnachtnes. But as it happet^s, smdmg a directory to the 
piifHer & emy mid natutai on thv Amiiia typins( dUr >pri: opt m 
shoatddo it. Dry A * you uxm^mt^ the t>id Conmiodofe syntax for 
hng 

As we go to press, there s s/fi7 no otfkkH ti^ord on the rmv Amtga 
tfitKit'ls >rju merttion, SO it '^ too eoriy to say a^itfher to expect 
cotupaiibiht} prtMetttiL However* you con take heart Irotn the fact 
that the Arnisia\ opertiting system software is designed from the 
ground up with ffexMtty and exixmdahittty in mtnd - H « light 
years ahead of ait otfter Comimxhre computers in this respect, fn 
tfw old days at Conwtodoee^ 'compatibtltty' and anatphatteles* 
were arktmxmt of aboal etiual tunency. 



Afl^iA marketing: Thank you for Vol 7. Isstie S, first for the 
iiKlu^»ion of articles on the Amisa: and second for the excellent 
Start Address. 

Allhough ihe Amiga articles are over my head, at least the>^ are a 
recognition that you plan to support the model. I am one of those 
who are Hill tra[>|Mn] in an 8-bil orientation in a 32 -bit environ* 
ment I still want lu Load and Kun wuh a simplu Shift/ Hun and to 
^1 up a directory with a c«TdO or L I yearn to be able to print a 
directory or pragnni Ustinfi with an opent,t < iiidt:(raT or 
Uat);prlnt^4:clo»e4. That was so aulonuHic. Nuw^ 1 am beginning 
to master ed df 1: dlr opt m. but I cannot get it to print even if I 
type dir opt a to prt: And t am w tired ol getting somc*thing 
about a command lacking a return code and I cannot find anything 
in the manuab on "return codes'*! And the manuab were not 
written lor sid) as L How abuul some articles lor the analpliabelei 
in the Amiga audience? 

On the second point, I agree wall your editorial wholdiCiitteUiy. 
But anotfier way that Commodore has repeatedly stiol itself in ttie 



No niche for Amiga: Why are Amigas not selling'' The short 
ans^' ilial IBM MS DOS is ttie busmen standard diMJ ttie 
clieaper 8 bit computers are tiiore tlian adequate lor niost tionie 
useft AmigB would be great for ft^fktffp publishing, btit the Mac 
already' owns tfiat territory'. 

EjcpandabUity? Youie telling a 1 Meg RAM box for $1035. nearly 
tfki: price ul a twu drive clunc Anyunu iitx^ling this much tneiiKjry 
is probably running business programs and %voukl be better off 
with DOS hardware, icUidgy tfiough it lv Ditto for Sidecar To put it 
arKither way, why speak Esperanto then translaie everything into 
English? 

Multitct^ing might be a sleeper, but a lot of us tiave trouble enough 
concentrating on one task at a time Granted, the idea of having a 
spreiKlslu'et churning away while you ^nte a letter to your MP 
sounds good on paper. But seriously folks, when s the last lime you 
had to recalculate Ihe orbits of alt the stars and planets^ UoA real 
wotrU spreadsheet applkatiuns run in a lew tacDwIa, even qw the 
lowly PC. 



At the risk of sounding like a curmudgeon, I must confess to a 
loathing of mice. This unfashionable prejudice may simply reflect 
my upbringing on IBMs and Commodore 8 bits, but Cm not so 
sure. Most tools that are easy to learn are less satisfactory for the 
experienced user. To draw what may be an unfair analogy, are you 
guys doing a whole lot of programming in BASIC? 

So who's left? Technofreaks and artists. Business empires on this 
market are not built. Don't get me wrong. I acknowledge the 
Amiga as a wizard machine, but right now it's a solution looking 
for a problem. 

Jim O'Hare, Victoria, British Columbia 

It'SQ bit ironic that the Amiga, which is arguably the most powerful 
micro on the market today, should be widely seen as having no 
natural place. It is even more ironic that its most radical innovation 
- multitasking - should be so badly undervalued. I think it's a 
misconception to suppose - as your spreadsheet example implies 
you do - that there is no benefit to multitasking unless all tasks are 
continuously running full bore. 

Perhaps in your letter to your MP you would like to include some 
juicy numbers about government waste. No problem -just save 
your document file from your word processor, exit the program, 
load your spreadsheet, make your calculation, write down the 
numbers, exit the spreadsheet, reload the word processor, reload 
the document file, and you 're ready to go^ Easy! Or, you can click 
the word processor out of the way, do your spreadsheet calcula- 
tion, then go back into the word processor with another mouse 
click. Easier! 

But that s just scratching the surface The real value of the multi- 
tasking environment might not became apparent to you until after 
youve worked on the machine for a month or two. And that's 
when for some reason you have to go back to a single-tasking 
computer for a while. You 'If find it frustrating and confining. By this 
time you 've become used to slipping fluidly hrom one program to 
another atid back again, with almost the same ease as your 
thoughts shift between topics, or your hands between tools. Atid 
you won't want to go back to a macfiine with a narrow-minded, 
serially-oriented operating system. 

Part of Commodore^s marketing problem is that multitasking is 
hard to promote. Reading about it isn 't enough - you have to live 
with it to appreciate its true power But time will take care of that, 
and a few years from now single-tasking machines may be just 
Mesozoic curiosities. That may or may not help the Amiga, since 
being too early can be just as bad as being too late, but iVs not 
inconceivable that it could eventually be more successful than 
anyone now imagines. 



TransBloopors 



EPROM Burns: 



Our thanks to everyone who sent in error reports for the Universal 
EPROM Programmer article in Volume 7, Issue 05. A follow up 
article appears in this issue. 



Hi-res Trace Utility SYS Address: 

If youVe had any slight difficulties with the trace utility on page 69 
of Volume 7, Issue 4 - such as the program failing to work -you may 
wish to change the SYS address in line 1060 from 52096 to 52723. 
And always be on your guard for sophisticated DATAfiers that 
cavalierly assume that a program's start address is going to be the 
same as its entry point. 

The trace utility also has a problem with version 2 C64 ROMs - the 
version that fills colour RAM with the background colour when 
you clear the screen. To make the program work properly on these 
machines, make the following changes: 



ine 1860: delete the last data item (162) 
line 1890: delete the last data item (169) 
line 1900: delete the entries 147, 32, 210, 255 
Finally, create a new line; 
1865 data 169, 147, 32,210,255,162 



In the assembler source code, the only change required is to 
reposition lines 4890 and 4900 to fall between lines 4690 and 
4700. 

Uncontralled Sprite Bits: 

David Johnson of Gander, Newfoundland, reports an error in the 
third example of the article 'Bit Addressing of Sprite Controls', from 
Volume 7, Issue 2. He suggests the following changes: 

Change line \ to Idx *5, instead of Ida *5 

Change line 5 to beq dabble, instead of beq maskor 

Tape Verif Izzle: 

Apparently not too many of you are making use of the Verifizer for 
cassette users that weVe been publishing for the last while, 
because we've just now found out from a single letter that up until 
thisissueit had a fatal error in the data statement in line 1070. The 
last number in that line should be 247 instead of 249. Thanks for 
spotting the error goes to Phil Hoff of Chico, California. 

Slashing and Pounding: 

In his book, The Home Computer Wars, Michael Tomczyk re- 
ported that one of his biggest triumphs as a one*time Commodore 
marketing executive was the replacement oi the standard Ascii 
backslash (code 92) with the English pound sign. This astounding 
innovation was first seen on the VJC 20, and was inherited by 
Commodore's subsequent 8-bit machines. Well, maybe Tomczyk 
had a point and maybe he didn't, but a side effect of the switch is 
that we have to be extra careful when we print an article with the 
pound sign in it. The typesetting machine doesn't know Commo- 
dore from coconuts, and code 92 comes out as a backslash every 
time; to get the pound sign we have to manually substitute a 
character from a special font. All of which explains why the 
'Commodore 64 23K RAM Disk' article in Volume 7, Issue 5, used 
an incorrect backslash both in the text of the article and in line 180 
of the program, instead of the correct British pound sign- Thanks to 
Jack R. Farrah of Cincinnati, Ohio, and James C. Sanders of 
Knoxville, Tennessee for pointing out the error. 



TTw IrancQciof 



15 



Mov 1987: ^A)lunw 7. Ittiw 06 



Smile! You're on RLE! 



Christopher Dunn 
Chicago, Illuiois 



RLE was first implemented on CompuServe to handle display 
of the National Weather Service radar weather maps, , , 



But FIrttt A Word From Our Sponsor. , . 

Our r«gutar THeCoJumn does not appear this bsue as usual. 
Instead, we have just a few notes here (sorry for the internipciofi 
Chrb). TeleColumn will be back in the next Transactor, but pan 
of what we intended for the TekCdumn (hat isn't here was the 
command sequence tor conftguring the DataPac network to 
allow succenful up/downloads on CompuServe, However. 
Ranjan BoK thoughtfutly indtlded this at the end of his online 
ser\->ces comparison (see next article^ 

The Commodore "MagNet" b the tentative name for the ontinr 
magazine lectlon ol the Commodore Network on CompuServe. 
So iar there's been mixed reqx>n5e over the choke of name, 
ranging from "terrific marketing idea", to "caichy'\ and on 
through "too cute". So. being the democratic blokes that we are. 
the floor is currently open to wMBMlons If you have one. or if 
you like "MagNef ' . plem let us know You can calf, write, or 
even message us on CompuServe (enter GO CBMNET and 
chooae CBMCOM or CBMPRG) 

Building the online tnagazine section for CBMNET is like 
learning a new language - and the first program you write is a 
databnef However, progress U being made aiKl articles from 
thi^ K^ue will be among the first to appear! We're alio consider- 
ing a sub-section of 'Online Ejtclusives**. We often receive 
articles containing programs that are just too big to publish in 
the magazine. These would be ideal in an Online Exclusives 
section since "entering (he program by hatid ' is no longer 
criteria for deeming an article unacceptable^ We took out our 
box dH unused Uufi and found teveral we could already put to 
use for this idea. There*s only one problem - our author 
payments buc^ can't handle the load o( this extra material, 
but if a free T-shirt or some other ^ would suffice, we'll be 
happy to oblige. 

Authors who lubmitted material thai wound up in the unused 
box probably know who you are. arHj welt be getting in touch 
with you shortly to see how the kfea might appeal to you. 
Naturally, you can feel free lo decline and your material w ill be 
returned. Further, we've already returned many articles that 
might also have fit into this caiegpiy, and there are undoubt- 
edly others with articles that would merit a place in this 
"lelc^ioeli^t". So, It you'6 like to re-submit them^ lhe)'1l be 
considered for Online Exclusives. 




Cbtiatopher and Pamclii Punn 

Ok. what is RLE^ It Mands for Run Length Encoding, and is a ^stem 
developed li Compuf>cr\'c to enable them to transinu high resolution 
graphic images to different brands of computers. 

A hires image is made up of pixels, as most of us know « that cm be set 
to different colors to form the picture on our screen. The image can be 
genurjled in various wvy% most often with a drawing program of 
some iort or with a digitizer when converting a real world image. 
This image can then be stored to disk ior recall later. Different 
computers use different formals for this storage* and even different 
programs on ttte same computer use ItKompatible formats tor storing 
images. Juil about the only common item was that all computers used 
pixels to form the screen image. RLE is a way of encoding the screen 
image so that the original picture m^ be viewed on most different 
otcimiputi 



In The Be^nnlng* . . 

RLE was first implemertted on CompuServe to handle display of the 
National Weather Service radar weatti^r maps If you were lucky 
erKxigh. back a few ymn ago, to have a terminal program thai had the 
RLE data decoder built in. then you could directly view these hires 
maps on your screen. K you did not have RLE capability, all you saw 
WAS ^bberish. As the format ui RLE filtered down to various program- 
mers, programs were wrinen to decode the data. Some were built into 
terminal programs, some were meant to be used off line to decode 
captured data. 



Tfm 



Mote RLE selections were iddcd to Cofn|xiserve, Uieri Pictures, 
bniiBtof the FBI's 10 Must Wanted, and more wcenUy. Imafles of 
MWr^ Children. However, all of these images were being gener- 
ated at CompuServe, useis themseWes wanted to translate their 
own wtirki ol art inio RLE. Step in the wizards again, and soon 
prognms popped up to transfer hires images on your computer 
Imo RLE files These files could then be uploaded to a database for 
iU 10 view, (aisuming ihey had an RLE decoder of course.) 

Spedfkatloita 

The format of RLE is ml^ quite simple It had to be simple 
because it had to be understandable by a wide range of computers. 
First olL all RLE images are in monochrome. I wont say btack and 
whie. because you could display a RLE image in blue and ydtow , 
or any 2 colors if you like, but the RLE data only tells you if a pixel 
on your screen is on or ofl. not what color It Is. Thc»standard in RLE 
files is a Black background (Pixel ofl^md a while foreground (pixel 



The screen size for an RLE image is 256 pixels across and 192 
down. This was chosen because it was the resolution of the screen 
on the original Radio Shack Color Computer, which was widelv in 
use when RLE was bejng devefoped. On the C64, the screen size ts 
320 by 200, so an RLE will not quite fill the screen- A bonder is lefl 
on tteieft. right and bottom. 

If you look at a hires image on your icieen. and starting in the 
upper left comer, counted the number of pixels that were of one 
color, then when you hit a pixd of a new color» start a new count, 
you would have an Idea of what Run Length Encoding is RLE is 
the count of dark and liglit pixeb acrois a line on the screen, RLE 
d^a is sent in pairs uf ASCII characters. The first translatit^ Into 
the number of dark pixels and the seoond transluting into the 
number of light pixels t; folkiw. 

Image Coding/ Decoding 

Say that the firsi line of an image had 3 dark pixds. then a light one 
followed b> 3 dark ones and another light one. The RLE encoding 
program would count the first 3 dark pixels, see that the next one 
was light, so fleneraiea 3 for the first dark value Then the program 
count?* itie light pixels, finds only one, and 1 becomes the tight 
valine. We now have our Tirst pair a 3 and a l. This could be used 
as the RLE data, but a character with an ASOI value of 3 h^ipens 
to be the Control-C character. Trying to send thai out on most 
networks would cause havoc! So to the raw vahiaan offset of 32 is 
added. 32 is an ASCII SPACE, so all RLE data is at leM a q»ace 
character or higher. The maximum charac ter useable in ASCII is 
127, the Delete character. 127-32 = 95So the largest value for a 
string (if pixels is 95. Getting back you our example, the raw pixel 
count is adjusted to produce the ASai characters *^ and T 
(chr$(35) and chrS(33)), The next pixels ivoukl then be counted 
from the image and the proom continued. 

H*hen the end of a line is reached, you simply wrap around on the 

next li ne Hthe pbtels don t chiiife slate from the end of one line to 
the beginning of the next, you just keep counting, tl you hit 95 
pixels in a row though, you have to Hop. Since the maximum 
ASai character usable is 127, and that means ^ pixeb in a row. 
what happens when there are more than 95'' If the pixels count 



was of dark pixels, the first character of the pair, you would 
fenerate the character 127, For the light character that follows you 
would genmia dwader 32 (ASai for ipaoe^ At the decoding 
«nd, the 127 would give you 95 dark pixels, and NO light pixds 
since 32 - 32 ■ 0. You then go on counting the daric pixels where 
vnu u^ 00 and generate a ne>i pair of ctiaracters ai needed. Tht 
same would hold true if the first pixel encountered in an image was 
light The first character of the data pair the one lor the dark cou nt . 
would be an ASQI 32, meaning N( ) dark pixels to start with. 



You can now see the meaning of Run Length Encoding You run 
down the length of the imagwcounting pixels and generatirig the 
dau from the count of dark and light pixels found The RLE data Is 
Mied in a t«tt file, and text flies are easy to trammit via modems. 

At the displaying end. everything runs in revw^. the fim^pair of 
data is taken and decoded into the number of dark and light piiels 
to draw on the screen, then tht next pair is taken and so on until 
the bottom Is reached. 

Tile only addition to an RLE file 1 will mention is that it has a 3 bvte 
header; the chamilers <ESCXjH The <ESO is ASCII 27. And 
the GH ^ands for Graphic Hires. This code is used to sv^itch 
terminal programs Into RLE decoding mode automaticallv The 
end of a RLE tile is marked with <ESCXiN for Graphic Normal. 
(Normal terminal mode.) 

Commodora RLE 

1 was writing above in general terms because it applys to all 
computers, not only Commodore equ^imenL Now 1 will get uito 
some specific programs lor the C64 that create and display RLE 
files. 

As RLE was meant to display pictures white eonnedad on line, the 
RLE decoding software was added to terminal prr^rams. You can 
alio deywnload or RAM buffer capture the RLE data and display it 
off line, Presently I know of 2 terminal programs that will display 
RLE imapi on line, CompuServe's Vidlex 4.2 and my own 
CBterm/CS4. If you caphire the RLE data to a di-tk fife, y«j m^ 
di!H>!ay it off line with programs like RLE2HR. You may generate 
your own RLE files from your hires images with the program 
HR2RLE, CBierm/c64. RLE2HR. and HR2RLE may be found for 
downloading from the databases of the Compuser\'e CBIG Sig. 
Vidtex A2 is available for purchase from CompuServe. CBterm will 
also print the hires image if you have a Star or Epson tyi^e printer. 
Both CBterm and Vidtex may be made to save the hires image to 
disk in a Doodle or Koala compatible hie %vith the use of an overlay 
subroutine for each program also available in the datiibastt of 
CBlGSig. 

Note to VMtex users: Before RLE pictures can be displayed, you 
must enable Hires Memory. Enter Mela*Q and setect Option 8 
HIRES MEM. Enter *r for Enable and hit Return twice to exit 
(Option ft default lo D for Disabled) 

RLE Image Sourrea 

Now that you have read this article, you may be wondering what 
kinds of images are available to look at online^ As I mentioned in 
the beginning, you may view the %i^eather radar maps updated 



n 



hourtv (GO WFJKT}{ERV or \he FBVs 1 iMit wmmi m (CO TEN) 
Of picliiieft oC missiiig children (GU MISSI^iG^ Oth^ ared» on 
Compttserve are atklmi? RLE imacft^ all the lime Bui thai is only 
(he hall ol it. Theris are huiidrols oi pictures ttiat have bieen 
ger te r a ffd tn- users and uploaded to vaiiou* Forums on Con^Mi* 
wrve Dalahase 3 ol CBIG contains owr HM) RLE images aJcHie, 
ranging from very tine deiaikd drawings by some very skilk-d 
aftt^^ to some ef|ually interesting computer roam "Nudes". 

Ttie Florida Forum uses RLE files to display maps and images of 
tftractlons from that state. Then ttiere is ttie hcture Sup{H)rt 
Forum (GO PO) that was formed for the purpose o( helping 
people with divpiaying mid ttt^r iterating RLE files, ti has a vast 
drtabane erf user cumributed iiimgo. 

In DLI 2 of Ttte Cotntnudur^ Art^ aiKJ GdinisPBmttfQOCBMART) 
youll find aproffram ratted CAD30 BIN Also in [>Lt2 are some 40 
RLE Figure hjf^s fliat ^ with (ht^ CAD pcu kagt^ Smce tto^teiw 
the 'Arts'' furum lur ComnKjdore tiser^ th«r DLs will contain 
other interesting Rl£s. and probably many more to come. 

An RLE fite is highllghtinl in a lorum's database tw the addlfinn of 
''/n PK RLE printed alter (he fiiename. If you Read that fiU* and 
are running a terminal program ttiat wilt do RLE. then ttie image 
will display on your scre^i. Whiri vt>u gi) Xo u[>load your ov^n Rl£ 
(lie to a database, you should also add "/TYPt;KLE'^ to Ihe upload 
command mj CompuServe will mark Ihe file ai im RLE image* 

New fHes am being added to the terums all the time. Ask the 
hMum sSYSOP if ttiere is a special place for RLE ttnagev. Sijuv RLE 
is a universal formal, your Commodore generated image can be 
displayed on lowly IBMs and Apples, lis about Itone tho*^ Mkscan 
see wtiat a real computer can do, . . 

If you have any q mitei s t might be able to help with, leave them 
to me at the CBIG ^ (GO CBIG. leave a mefUjP to SYSOI^ or 
Eazyptex me at 76703717. i wili Uvlp It I can^ There are al^j a 
number vf graphics utilities lor convermm between various hires 
formats avaibhif in CBKV^ d^tal>as(^s 2 find 5. TTie Rl£ images are 



Editor' 

2RLE' 
(Dhk'l 



Note: As a bonus, the programs "RLE2HR" and "HR- 
be on The Transactor Disk that goes with this l$»ie 




^mmmmmmm 



Fttlamt^ Raiy 
Cross* J^. 

B9t 44 

' *i* Fi friUf C^ 
4i Height &* 
S!3^*:?Ut 1?: Ib^ 
^^: mid ShE-Ktd. 

iEraf H^stl 

CoRHe>ttlonFin 
Tl»tionaUt:Mi»€ 

Tattoo of ii^il'f 
t ro;e, UFiNtrrt, 
irik. SiisW ttiCi 

It. *rfc< tuicnUi 



From ^BI Ten Mui^t VV^tcd Sectioii (GO rail 



I! 



'^■■% 



* *i 



k.- 




(The veftk^ white lines in dark areas afe due 
10 the printer, not the RLE image RIe. 









CtHnsloplier 
Enoc ftheyta 

it 59^ 7 months 
FrcNtj Colorado 

-^^ M^':>% r t 'i . >t k' ^ Em© f : Bljm 




iLSf ^fe te 





l?r* 









M 






From ilii: Mij^^ium Childrt-nn Seillon (t;0 MLSSLNtJ 



r ih rn ftttmoclPi 

mmmmm^ i i ■ ^^ 



--^^mumtmmmt 



mrntm 



Ktapy iwiJ. vo*Mm< ;, i»*u# oa I j 



Beyond Bulletin Board Systems 

Ran}an Bose. Winnipeg. Manitoba 



. . The real tun and pou^r of tefecommiinicating extends 
beyond reading E-mail or messages. . . 



Tdecommunicatton is a hicinarini^ and exrremely useful appli- 
cation of computers. Few of th<»e who have tried il ever get 
over the shiver magic of the ability to talk' mth retixxe 
computers that are usnaify so miKh bigger and poumful than 
their own. Commocjorc equipment owners* have genefally 
been fortunate in this respect because CBM has alw^ been 
actively involved in promocmg this branch of computing 
among their patrons. They have introduced four modems so 
fir, each a step better than the l^t. Their first modem, popu* 
larly dubbed the 'Vicmodem\ which was introduced with ttie 
VIC- 20, was a very bask piece of hardware. Meet came the 
I650automodem, soon to t)e followixl by the 1 660 with touch* 
tone dialing, then finally, the 1670, which not only made 1200 
bps acc < ss ivailable. b*ii atei many other convenient features 
including Hayes^like smart' commands. The modem comes 
padofed with several telecommunication programs of high 
quality, and alt this without one having 1o trade in that ticket to 
Hawaii 

Beyond BBSs 

A typical telecommunications neophyte usually teethes on 
bulletin board systems, which often vary a lot in features and 
capabilities. The real fun and power of telecommunicating, 
however, extends beyond reading E-mail or manges or even 
exchanging prognms. In the presnt ^e of tnfomania; one 
needs to know a lot of varied bits and pieces of information. 
These biltiuns and t>illk>ns of characters can be handled efTi- 
ciently only by a mainframe computer in fact, several of them 
working together. Several such huge information diabases 
exte. providing the following 



i4 Pure information - Encyckspidtas, research libraries, news 
items, stock prKes. etc 

b) Public-domain software, (iee%^are and shareware. 

c) Electronic mail (E-Mail) 

d) Interactive guies involving single or more players, 

e) Special interest groups (SlGs) or dubs catering to a wide 
variety of interests from Agronomy to Zen. 

f) Real time inleractive conferencing (electronic CB), 

g) Commercial services - Banking, stock investments, books, 
software, travel arrangements, etc. 

Some of these servkes are provided through 'gateways* to 
other nkunlrames and often incur additional surctiaqas. 

One big difference between bulletin boards and information 
aervkes is that <w>e is charged by the minute when accessing 



the latter. For most people living outside the continental 
U J,A., thi ilditiondl tektummunkaliun charges. Since 

one may be paying from 17 to 75 Canadian dollars per hour 
one really has to plan an online session ahead of time, stkI 
familiarity with the system helps. 

Three of the many services which support the interests of 
Commodore users are CompuServe (CIS). Delphi (DEL) and 
Quantum link (QL) Alt three permit ^iccess up to al least 1200 
bps. with CompuServe having diltcjential rates for 300. 450 
and 1 200 bps access. 01 these. Quantum link raters exclusively 
to ownen of the C-64 and C- 1 28. 



Software Requirements 

Quantum link requires special telecommunications sofNrafe 
which is distributed free with several soft/hardware packages 
(e* GEOS, 1670, etc). A monthly minimum service charge of 
$9,95 (US) Is levied, which includes one free hour of spedal 
services {almost anything of interest including Email*) costing 
S3.G0/hour (US), (Zompuserve recommetids its 'Vidtex' soft* 
ware system which supports its proprietary error-checking "B" 
protocol, a protocol that is more efficient and faster than 
Xmodem, high resolution graphic displays (RLE), and other 
spedal and standard features. Several public-domain pro^ 
grmts also support some or all of these features. In additkxi to 
the 'B' and Xiimtem protocols. OS also supports file transfers 
using Xon/Xoff, and speda! software is not absolutely essen* 
tial. Delphi permits Xmodem transfers and is compatible wiih 
most Hiftware. Ttiere are no minimum monthly charges for 
regular members of CtS and DEL 



QL is the easiest to access because its special scrftware automati* 
cally dials and connects with the system. The software supports 
practically alt popular modems. Accessing CIS or DEL is a bit 
more involved depending on whether you are connectmg 
directly, or through a telecommunication network such as 
l^mnet. Telenet or Oatapac Some terminal programs wpport 
user-definable keys and autostui features which, once pro- 
9^mmed. make the log-on procedure easy. CIS and DEL 
klentify a user account by a user id and password; the latter 
should be changed periodically to protect ones account from 
unauthorized aooett. QL handt&> account identification auto- 
matically. 



MvrMft 



^**— ><» 1 



L 



FMtU 



Although all three services provide all of the basic features, the 
range of services on CIS is the largest. QL will be of greater 
Interest to beginners because ever>lhing is menu-driven, and 
the menu-vrreens are cokHjrful The tyslem. however, is not 
Aeiibie. and advanced users cannot but help feel caged and 
slowed down CIS and DEL permit menus tm beginners, and 
stiort ptompts or command mode for advanced users. These 
save a lot of time {%%) in the long run. 

The qtnHty of games on QL is much better* because <rf the 
interactive, colourful high -resolution graphic displays, when 
compdred with the primarily text-oriented games available on 
the other two services. 

On the other hand, both CIS aixl DEL provide areas to 
r^earch databases such as DIALOG. MEDUNE, etc Both of 
these services also offer searches made on one's behalf by 
experienced libraflans (SS). 

Electronic mail is easier and more flexible on GS than on DEU 
which, however, provides services such as Telex, Globalinic, 
etc. Both permit forwarding of mail to other information serv- 
ices. 

QL te mtirety CommotlDre^-q>ecific and b currently supported 
by CBM. There is a GEOS SIG. Commodore hotline, product 
reviews, AHOY and RUN forums and a unique program pre* 
view section from where one can doM^nload good quality demo 
versions of commercial software and their abridged documen- 
tation. Several public domain program libraries are spread all 
wet the system. The Commodore SlGs on CIS, which previ* 
oi^y were supported by CBM. itiU continue 10 support pro- 
grammers, telecommunications, graphic and sound artists, and 
provides technical informafton. It is now managed tqr the staff 
from The Tran^ctor and others. Several data libraries choc- 
full of public-domain programs exist on the system. OS SIGs 
abo support most other computers and electronic editions of 
several popular magazines. DEL is the poorest in this reipect. It 
has a 'Ragship Commodore' forum manned by ex-SYSOPs 
from CIS, and has Umtod fare lor Commodore enthusia^s. 

All three tenrices have sections for placing and re«cttng Classt* 
fted ads, which are hee on CIS and QL CIS and DEL assign 
personal disk space to users (or storing their files and other 
information. 

Navigating 

CIS b by tar the most flexible system, with the easiest and 
latifst navigating commands, permitting one to jump around 
the system. One can even custorn-design the first menu lo 
include only areas of primary interetf. Excellent manuals^ 
charts and the famous book by Bowen and Peyton, "How to Get 
The Moti Out ol CompuServe*" (Bantam) are recommended 
reading. One should try to gain familiarity quickly and switch 
to Command mode as soon as possible lor increased speed, 
thereby saving time and money. Navigating commands on CIS 



are logical and consistent betw«n similar sections. In addition, 
CIS IrtiDslers information appreciably liiltr than the other two. 
which are prone to delays even during non-rush hours. QL can 
be painfully slow at 300 bps and has a ver>' ^low SEARCH 
operation. This almost wipes out the difference s in fee strtK- 
ture, and CIS comes out ahead of the other two. Moving files 
between your personal disk area and public areas« or sending 
them as E-mail is much rrme advanced yet easy on CIS. which 
provides a choice of two different editors with distmctive 
features (actually a third kind of editor is also available for 
special use). Two special commands on CIS. namely GO and 
RND. are really hdpful in moving around the system elfi* 
derUly. All three provide feedback services for ansiA^ering 
specific questions and problems. GS* feedback service is more 
human, and reads least like a computer-generated form tetter! 

In summary, for Commodore equipment owners, both CIS and 
QL offer a lot of useful services and information. QL is some^ 
what limited m features but extremely easy to use, %^th some 
unique and interesting features such as commercial software 
demos. GEOS lorum, educational resource center and fantastic 
games. CompuServe, on the other hand, has a huge, dynamic 
spectrum ol features, etiy. flexible tuid fast navigation, and a 
lot more to offer, especially after one gains some familiarity. 
Delphi, in my opinion, hardly offers anything uniquely attra^ 
tive to patrons of Commodore equipment at this time* 

^lecliJ note for CIS users Kcewing via DATAPAC: 

For years now. Canadian users, accessing CIS via DATAPAC 
were not able to transfer programs or other files using *B' or 
Xmodem piotoools. The problem is due to DATAPACs ^g p e» 
sjve interferimce which blocks transniission and hangs up the 
systems involved. The following procedure can. however, 
soothe DATAPAC into letting such a transfer (B or Xmodem) 
proceed. This routine was worked out by some user and was 
provided to me b> CompuServe, I have used it frequently with 
100% success.: 

I , After dialing DATAPAC and entering one or two periods (300 
or 1200 bps) and receiving the DATAPAC node address 
u enter P 29400138 <Reiurn> 



2. At the CompuServe user id prompt, enter: tPPAR <ftEr 
TURN> Conlrol-PPAR 

You m\] next see a la^ list of numbers fotlo^ing "PAR*'. 

3. Enter: PROF I <Retum> 

Tl^iis causes a global change and you will lose echo from 
DATAPAC. lype the following blindly, or use predefined macro 
keys, or switch into half-duplex if your modem has a switch to 
do so. 

4. Enter SET i26!O04.0O3:O00.004:0O4,00I:000<Return> 

5. Exit DATAPAC by entering a <Carriage Retum> followed by: 
GOODBYK <Return> 



6. The Compuser%e user id prompt 
usual. 



ars. Type on as 




lO 



MoYifVi 



Commodore in Europe: 

An International Comparison of Price and 

Mikos Garamszeghy, Toronto, Ontario 



(VIENNA. Auaria: Transactor Inrernationa! News SeTvke) 
Vienna is one ol my favourife cities: home o* music. art< cafes, 
pastries, chocolales and Commcxlore computers. Commodore 
cmnputers? On a recent business trip to Vienna, I had a chnce 
to do some window shopping for computer equipment. This 
artKic relates some of my experiences In Vienna and other 
European count] 



Commodore machines are quite popular In most parte ol 
Europe, even in certain Eastern Bloc countries such as Hun* 
gary. (A Hungarian colleague who works in a large engineering 
and scientific reMarch institute tells me that mod ol their word 
processing and sdentific computing is done wtth C-64 and C- 
1 28 computers). Computer equipment isgemrally avaltabte fn 
mass market retail shops such as department stores (even 
Harrud's in London^ where the Queen and her family shops, 
aeili Commodore equipment) and specialty stores such m 
pholo/electronics itor^ and computer stores. M<^ serious 
software is sold at the specially stor^. while the mass markH 
stores generally only sell games programs. Technical documen- 
tation is plentiful in the German speaking countries (most of 
the Abacus book series is tnnslMed from the original German 
version for use in North America). There are also some very 
good technical magazines. The German version of RUN tn^h 
line rhrais TRANSACTOR for its no-non^^ense technical con- 
tent (all in German, of course). Several magazines are also 
available in English and French dealing i^Ui general and 
Commodore spttitk computing. Sadly, I hear, the French 
%*ersion of RUN is to cease publication at the end of 19B6, 
leaving that counti)- withoul a native Commodore specific 
magazine. Perhaps Ttansactof should fill the gap with a French 
version? 

Much of the hardware familiar to North Americans is available 
jn most European countries. The C-128. C-64 (both old and 
new versions) and AMIGA are generally available along with 
their usual peripherals. In addition, the IBM done PC- 10 and 
PC-20 and even an AT done (PC-40) are also v^aOaUe. Several 
machines that have long been dropped in North America, such 
as the Plus/4 and C- 1 6 (as well as an enhanced model, the C* 
1 16) are all popular items. Third party hardware and software 
support for the Ptus/4 - C-I6 type machines is fairly strong. 
Memory expansion cartridges and RS-232 ports are even 
available for the C- 1 6. 

1 saw several items that I would tike to see in stor» on this ^de 
of the pond, but Commodore does not seem to w^am to bring 



them over The most interesting is the 12S-D. This is a tw*o 
piece C-i28 compatible unit with a delichabte Iceyboard, a 
built in 1571 disk drive and, what every Commodore owner 
dreams about, a built in fan cooled power supply. The mam 
computer and disk drive unit is styled much like the Amiga and 
is the same color as a regular C-1 2& The detachable k^ylmmi 
is a very nice feature. It has the same number of keys and 
layout as the conventional C- 1 28 board with perhaps a slightly 
better tactilt leedbadL llie Iceyboard cable is about 1/2 inch in 
diameter and terminates at the main computer unit in a RS- 
232 or IEEE type "D" plug. Although the cable may be a bit 
short and stiff for some people who like keyboards on the lap, 1 
found it quite comfortable to work with. Judging by the diame^ 
ter of the cable and the numberof pint in the plug, I would s^ 
that it supported all of the connediom used on the internal 
plug of a normal C- 1 28 keyboard cable. Therefore, it should be 
pOMftjie to connect this detachable keyboard to a North Ameri- 
can style C~I28 (if you could get your hands on one of these 
keyboards). The main computer/disk drive unit is about 430 
mm (17 in) wide x 405 mm (16 in) deep x 100 mm (4 in) high 
and weighs about 9 3 kg (20.5 lb) It also has a fold down 
carrying handle on the left side. Although it does not have a 
built-in monitor like the SX-64, it might still be considered to 
be a lemi-transportabte. 

The European C- 128s and 128-Ds have two character sets in 
ROM They are selected by the North American 'CAPS LCXTK'^ 
key which becomes the ASCII/ DIN key. The first set (ASQI) is 
Identical to the North American sei. The second set, DIN 
(abbreviation of the German national standards board). iiK 
eludes a few extra characters and accents not found in the 
English language. In appearance, the DIN set resembles the 
characters used in the older Commodore PET series and has a 
much crisper appearance. The lines in the characters of the 
standard C-128 are two pixels wide each. The DIN characters 
have Of)e pixel wide lines. Th\% gKes it the crisp image on a 
good quality monitor. It is also ^.uitable br European TV 
standards which have a higher rraolution than North American 
NTSC. 

The 128-D supports all three of the C-128 operating mod« 
and had no trouble running any of my C-128 and CP/M 
software, (But then agiin, 1 would be surprised if there were 
any incompatibilities because it is essentially the same ma- 
chine in a different box.) The 128-D is avaOaUe in Austria. 
Germany, England and most other European countries. It is 
also available in Australia. 




^^^f ^^BW 



i 



The Europea iLso hwe i ieoond C-i28 compatible dbk 
drive 10 cHcMJSr from the 1 570. This drive resembles a 154 1 In 
outward d[>|j«arancebul i!» actually a sinyk* sided vrrMon uf the 
1 57 1 . It supports the fast serial bus< burst mode as %^l as single 
sidled MFM type G^/M lorniats. Tin- price is atx)ut mid way 
between a 1541 and a 1571. 

Theflpedal ISSl parallel drive for the Ptiis/4 and C-IG (a very 
hard to come by item in North America) hi relatively easy to 
find in moil parts of Rurope. Several third party manuFaclur^i 
offer IS4I compatible drives and other ma^ storage devices, 
sijdiasa200k water tape drive thar wi>rksun thecaaMte (xm* 
Speakjiig uf tdbM^Ucsi, most caMial Euri^an userb seem to 
prefer !ape imlt^ over disk drives. Jtidging by the relatively high 
cost of the equipment, I am nut surprised! 

There were aevcral fairly "popular in North Anu t l^ i'* items 
that I did not see in all my wanderings around Europe. Perhaps 
the most noticeible was the 1700 ainl 1750 RAM expansion 
caitridges, although several third party RAM eqianders were 
available for the C-64. Modems were also very scarce and 
eicpenMw. 



Table 1 is a suminary of some of the more common computer 
prices in selected countries, AD prices are shown in Canadian 
dollars, converted froni the a{>prDt>riate nauonal currency at 
the prevailing exchange rate. It should be noted that most of 
the Eurofjean prices include ail ta3ces (up to 30% or more, 
which in most cases are refundable to non-resident purchasers 
upon leavini^ the a>untr>') while North American prices gener- 
ally do not. Europeans also tend to sell computers as part of a 
pfkckage with a monitor and a tape or disk drive, sometimes 
even wiih a printer, usually with bundled software. The prices 
in the table have been sepanted lo the extent possible into the 
component items. Some item<^ in the list may not be familiar to 
North Atnerican readera such is the Siticlair and Anistrad 
compulefi. These are tx)th quite popular in most parts of 
Europe and are aimed at a similar tyjie of market. They are 
included to give an indication of the price of Commodore 
equipment relative to similar equipment, hi addition, a few of 
the Commodore produa numbers mean different ihin^ in 
different countries. For example, in North America a 1901 
monitor is a monochrome monitor while in Austria and G^* 
many it is a color monitor equivalent to the North American 
1902. 



Commodore 128 D 




Wl^^f H^P#* iWBWmP f I 



Table 1: 


Intemational Coin|Mirison Of Selected Compi 


Liter Prices 


(Nov. 19S6) 






Canada 


L-i. i Auitha 


W. (kfiiLHiv 1 U.K 


Hunguy 


France 


Couuutxlure: 
















(Computprfl) 
















C-16 


99 




199 


161 


150 






+ 4 


199 


120 


296 


209 


250 






C-64 (old) 


249 


199 


296 


321 


298 


735 


329 


C-64(new) 


299 


249 


396 


349 


390 




425 


C-128 


450 


385 


S» 


475 


538 


1911 


599 


128-D 






1198 


979 


996 






Amigi 


1986 


ISOO 


2300 


2250 


19S0 




2800 


PC- 10 II 


laoo 






2300 






2785 


PC-2011 


2500 






3200 






4289 


(DUk drives) 
















IS30 iJ.iMv^eHe 


49 


56 


79 


65 


65 


22S 


75 


1541 


349 


210 


399 


360 


396 


BBi 


440 


155] 






459 


400 








1570 






499 


425 


450 






1571 


425 


350 




509 


518 




650 


SFD-1001 




399 




400 


500 






(Monitors) 
















17U2 


399 


279 


499 










1801 




295 


S99 


390 








1901 






799 


650 


558 






1902 


549 


399 












(Prititen) 
















MPStOOO 


499 


350 


v99 




518 






1525 


199 






279 








MPS8U3 






499 


279 


296 


900 




1520 






399 


175 


175 






MPS 802/1526 


399 








700 






DPS n 01 


499 








550 






Atari; 
















8U0XL 


159 


99 


199 




140 






130 XE 


249 


199 


399 


210 






320 


520ST(munu) 


1099 


910 


1499 




1190 




1290 


I040ST(cokir) 


1699 


1599 


2399 




1800 




2580 


SInrtaIrt 
















QL 


599 




39B 




300 






Spectrum 






249 




169 






Spectrum 4- 






299 




220 






Spectniml28k 










280 






Specmiml28k + 2 










320 




429 


Amfttrsd: 
















464 monochrome Jape 






649 




400 




579 


664 color,3.5 di!.k 






1199 










6l28cc4or.3.5di'ik 

1 






1399 




800 




1289 


Notes: 


1) All prices are quoted in Canadian Dollars bated on the folla\%ing exrhangt^ raf rs: 


fl.OOUS - $t.40a)N: 1 AS - WJOCDN; I DM - 10.70 CON; I UK- $2.00CDN; 1 forint= $0.029 CDN; I FF= $0,215 CDN 


2)Prfcest>aaedonav 


erage of severa 


1 typio) rctdi CI 


rs in each cuun 


Hy; Euro|)ean pfices include appticabk> VATfj 


Mies lax). 



ihS TfOnMKIOt 



w^s^^im^ 



Provoking Thought 



Chris MiUer 
Kitchener, Ontario 



The thing that keeps me plugging away at this keyboard, 
hniriri a profound aversion to real work, is the deep-SQUed 
belief that what lies tiefore me Is not a tangle of inanimate 
drcuitry, but a new order of life evolving, and that some day it 
will ihdnk me (or (he faith I had in it and the help i give it way 
back in its infancy as a tfmdm. 

1 had a conversation %vith a wotnan at a par^ once who 
appeared to brieve the same, but as it turned out was <Mily 
trying to shed herself of an incredible nerd without gelting inio 
an argument. Still, it's the closest I've come to finding someone 
^ith my "religion.** 

Ufe... 

The tired phrase "user friendly" turns my ^omach as quickly 
as the n^ct: still it does iliustnte the significance of the liv ing 
element in software. Good prt^rams do not give users the 
feeling that they are dealing with something inanimate. 

And Recurston 

I would like to discuss a glorious technique for breathing life 
into your progranxs. It is standard fare in many languages; 
unfortunately^ Basic is not one ot them, Ther^ore. many 
Commodore hackers quite possibly remain oblivious to its 
power and even lis existence. 1 refer to recursion* likened by 
fome to a snate swallowing its 



What b Recuraion? 



«i 



Recursion is 
recursion is 
rectjfsion. 



Recursion involves either a subroutine calling itself, or two or 
more routines calling each other. To clarify, imagine THIS 
routine calls THAT routine, and then THAT routine calls THIS 
routine^ and then THIS routine calls THAT routine again before 
THIS routine has returned from its original call to THAT routine 
in the first place, and so on, and so on but not indeTmitdy, of 
course. That would be reoiiskMi. The oppo^ ot recurrion is 
iteration, in cMe you evcf need lo impreii someone M a pafty. 



Where Can I Get Some? 

Languages like C and PASCAL support recursive activity very 
nicely. Ungu^es Uke BASIC and COBOL rick) and RPG (dou* 
ble ick) do not. Assembler supports eveothing: it |ust takes a 
little more work. 

For a language to recurse properly it must support local varia* 
bies, which means thai every functton, procedure, subroutine 
or whatever, must set up its own personal varidsle space eadi 
time it Is called. These variables cannot be chewed on by the 
rest ol the program or even t^ other caUs to the same routine 
unless you. the programmer, expressly say so. 

Mkt-Tenn Test 

What would happen if you ran the following Basic program. 
thent>T>ed'12345q"? 



SOgosub 100 
90 end 

100oetkSifkS« 
1tOifk$o 'q" 
120prtntk$; 
1 30 return 



'• then 100 
then gosub 100 



(recursive deflnitran of a recursion)" 

Actually, if you took up ''recursion" in the dictionary, you will 
it defined as. 

**. . ^common coding mistake o( iKivice and student pro- 
hammers when the use oi COTO has been forbidden. 
See stack overflow.** 



(A) "RETURN WITHOUT GOSUBT' error 

(B) The system would cr^h 
(Q "q" woukJ be printed 

(D) '*qqqqqq" would be printed 

(E) qS432r would be primed 



The correct answer is D. not only because previous values for 
K$ are bst each time you press a key and Basic would RETURN 



HV^^F V^^Bv4' 



V 



^K3 



L 



^^ 



■^ 



through the PRINT once for each \mt you pmnd a key, but 
because rhe correct answer is alinotl always D on multiple 
choke questions (same as my mark), 

If you pressed too many keys before the Q. you would blow up 
the stack by nesting CC6UB5 too deeply. 

If i similar proemm %vere written in fiscal then E would be the 
correct answer. That again irould be recurskm. 



So Whafa It Good For? 

Recursion is us^l for a lot of things besides prtnting input 
backwards; nested expression evaluations, binary searches 
«kI quick sofU. just to name a lew. One of the most traditional 
applications of retursK^e algorithms Is In analyzing board game 
positions, where a program must check every possible line 
leading from a given positkni for a specified number of moves 
before choosing the be^ 



The two Commodore 64 programs Induded with this article 
the board ganit^s REVEfKI and my ver>* own personal version 
ol this game, FENCE. The following short routine provides the 
brains for each of them, and indeed could be used in any 
diuation in which one wanted a program to "kiok" down a 
decision tree. 

Don't bother typing it in and trying to run it unless you're in 
kive with your assembler's UNDEFINED SYNfBOL error mes- 
sage. See if you can follow in a general way what is happening. 
so that when the need aris» you'll be ready. 



fifxJ'best*move - • 
Ida #0 
ila l6v«l 
jar setpomters 

1 
I 

checktevel «• 
Idx lev«i 

cpK difficutty 
beq return 

Ida #0 

sta movecounl.x 

jar findmoves 



check' next move » • 
Idx level 
Ida movenum.K 
cmpmovecouri.x 
beq return 

*• 
i 

inc moveoount.x 
Jar makemove 



:inllleltze level to present position 
:to vanaNe arrays for curreni level 



:current depth of analysis 

ihowdeeptogo 

;it equal dont go any deeper 



;* of moves tested on thrs level 
;retufns f of moves and array of 
movet 



;to access tabfe values for this level 
inumber of moves to took at 
;8ee if alt moves are accounted for 
,rf so return 

:otherwise bump counter 
;change the board array 



inc level 

iar setpotnters 

jsr switch 

Jar checktevef 



;next level in 

for rkew level data 

;turns the board arourxJ 

^recursive call to routine executinQ 



;»#»now have analyzed to requrred depth 



jsr switch 
dec level 

setpointers 
evaluate 



:sides aoajn 



m 



jv reset 



Jsr 



;to data for fast levef 

;attach numenc rating to final 

position 

;reset the po&tion, le take back 

move 
check*r>ext'move ;recursive can to next move arxJ 

level 
pck ;choose the best line 



fMurn 



The above passage admittedly sniacks more of 

than ol a usehil iubroutine that one can plug in. black box 
fashion, to a program. It is not something a beginner may want 
to cut teeth on. It does display a fairly powerful and concise 
machine language method for traversing trees and« hopefully, 
will provide food for thought for programmen whoVe never 
consifiered the pc»sibiliUes of controlled recursion in their 
prc^ams. 

Notkre how X is used to access non-array varid)lei relating to 
the level of recursion. SETPOINTERS sets up the table data lor 
level so that recursiun 15 completely supported. 

Over-the-board possibilities are structured like a decision tree. 
Each node represents a position wuh the root being the current 
position- The branch^ off each node represent possible 
moves. The above algorithm zips to the bottom ol the tree then 
works its way back up, ejcploring evey possible combination of 
moves. Only the final fleaO positions are actually evaluated 
with results cumpaied and passed back up the tree via the PICK 
routine. 

When this roiJtine fmaliy exits, the outcome of every possible 
line to the specified depth has been c\aluated. The computer 
then simply chooiei ttie best (or least worst) alternative, (f 
computers were fast enough or if the univene wm going to be 
around longer every game could be analyzed right to the end; 
the machine would never lose. 



The Fun Side Of Ail Thia: Reverri 

Reversi is a good game accept that it s a pain to play over the 
board. A single move can entail flipping 20 or 30 piecet over, 
and klutzes like me tend to knock them all over the place, 
losing the position. 



^.^^o^ I 



Ranrsl is a democratic came. A) J piecei are equal. Reversi is 
very positional and strategic, but not terrfbly tactical until btfe 
in the game. 

The nilca im atanple: lay dovm a man so that you out-flank 
your opponent along rows, columns or diagonals. If there are 
no out-flanking moves then your opponent moves again. The 
gune U o\'er when no one can move. The %vinner controts the 

If you don't qtitte understand yet don't worry. Just IjOAD 
"REVERSI '.8 and RUN IL Help is available. 

Myou want to ptay Flip (the computer) select I platyer. Selecting 
2 players teUs the program to monitor and referee a game 
between two humans. 

Sdect a low level of difficulty when prompted, say I or 2, untess 
you really want to get creamed INFINtTE level will analyie 
ever deeper until a key is preyed (you wont live long enough to 
crash the stack). Anything over level 4 may take a few minutes. 
e^)eciallyinlhemidd]egame. llyoiichuoeelD play level 9 your 
grandchildren may have to finish the game for you. 



A heart beats in the upper- right corner of tfie icreen while the 
ecrniputer thinks so that you don*l have lo wonder if it has 
pined aiw«y or something. Rip will make a tweedllng noiie 
after moving, in caie you fell asleep or were doing something 
else. 

When you diooee your ookMtr, keep in mind that in REVERSL 
black moves first. 



Get Help 

if you arent sure what your moves are, pre» H for help and 
they will be shown to >'OU. Use the CRSR keys (or joystick in 
port 2) to pOiMon the big X over the square you want, and press 
RETURN (or fire). The appropriate pieces will be turned and 
then the computer will play its move* 

Ttiere are buzzers and horns and poignant messages for stuck 
pc^tions an<l .ittt-mpts at illegal moves. If you bnt the com- 
puter. . . well, see lor yourself. 



No Clieaiing 

There are key& for removing and adding pieces uf i-ither colour 
and for trading sides (B. W,E,T), These are for problem composi- 
tion arK) spedil opening positions only — not for cheating. No 
Cheating!!! 



ItisLaut Repbiy 

When die game is over, you will be asked if you want to replay, 
start over or quit. Games are recorded in memory. Replay 
allows you to single step, using the space t»ar through a game 
jusi completed By pressing P you can re-enter the game at any 
point and play through tfiose '*if onty I hadda. . ." situations. 

Full screen colour graphics are used for the board* 



The Game Of Fence 

If you like RcversJ. you will love FENCE, Even if you don'l tike 
Reversi you may get otf on it. Fence is like Reversi except that 
instead of t>eing played on an 8 by 8 square checker type boar, 
it is played on a larger 1 1 by 1 1 board, and only on the 
diagonals. 

LOAD "FENCE '.6 then RUN 

I prefer FENCE: 

ft b possible to see farther ahead into a position because there 
are fewer legal moves - unfortunately, the same is true for the 
computer (Gnash). 

Ttie game is s^horter and much more tactical than RevenL It is 
poniljle (though not necessarily advmble) lor the player mov- 
ing first to foroea stuck position on his/ her/iU opponent after 
only a lew moves. The all-powerlul conwr squares no longer 
exist, but are replaced K- 22 irreversible side square which 
come into play early in most games. It is not unusual for a game 
oi FENCE to end kMig before the board is tilled. 

Score board, textures, conimands, graphics, whistles, belb and 
buzzers are the same as with the Reverb guna The only 
difference is thai if you beal (he computer you get . . well, see 

faryoumlL 

Where a number of mo\'Ps have equal value, the computer will 
raiidunily select one, so memurizing a winning line (when you 
get lucky) is probahty not going lo help you the next time. 

Unl e» you find extreme tedium therapeutic, it is unlikely that 
you wouM want to type in the thntiMndigf data lineithat tfiew 
programs would generate even if Transactor were lo see fit to 
print them, if you are interested in dtecking FENCE and 
ftEVERSl out this might be a good time to go for the T^niactor 
disk. 



Random Number Generation 
In Machine Language 



Gregoty D. Knox 
Wurtsmith AFB, 

Michigan 



. • .some applications are more critical than others, but the 
point here is that you sometimes need sequences of random 
nuinbets that are well behaved (in a random sort ofwayl , , 



A variety of applicarions rpquire ^nerating a lequence of 
random numbers Many gdmes. for example, me a rindomty 
generated number to simulate the rolhng of dice or to change 
iome feature of the program s operation in an unpredictabie 
way. II you are doing any kind of simulation with a computer, 
you are almort sure to med llieie numbers in one way or 
another Maybe you need to simulate some kind of input to a 
modeled system but only have a statistkal description of the 
input *'signat'V or perhaps youV working with the simulation 
technique called Monte Carlo analysis. These applications and 
more can all make stringent demands on the sequence of 
rartdom numbers you uit. Of course some applicaUuns are 
more critical than others, but the point here is that you 
MNnetiniet need sequences of random numbers that are well 
behaved (in a random sort uf way). This anicle describes a 
techniqtie to produce long sequences of random numt>ers. 

Tve been using the term "random ' here without much regard 
for its rigorous meaning. In reality, the sequence we can 
generme with a computer are properly called pseudo-random 
sequences. The computer b a determiniMir de\^ice and thcre^ 
fate produces deit^rnimislic results. Truly random numbers 
would have to be generated using some kind of nondetermlnis- 
tk process, for example, sampling the electhcaJ noise voltage 
across a diode or resistor. Of courae you coukl use such 
numbers in your computer, and there are jnMances where you 
might need to. but in general there are good reasons for not 
doing so. First of aU, it $ inconvenient, but beyond that you 
sometimes want random-like data txjt need to use the same 
lequenct^ mure than once. U it s a very k>ng sequence, during it 
could be a pretty big waste of memory Another rcaaon is that 
you can emrase a degree of control over the statisiical proper- 
ties ol sequence you generate in a deterministic fashion. 

Moat hl^-level languages have some type of instrudion that 
lets you generate sequences of p*;eudo-random (hereafter 
called random) numbers. Depending on the particuldr Ian- 
gu^ge and its implementation, these random numbers m^ or 



may not be very "good ones'*. There are several factors we 
need to consider when talking about "goodness". TWo of the 
rTKMre important ones are: Any sequence we generate with an 
algcjrithm will eventually repeal ilscif This is an unavoidable 
property and of some importance. Secondly, the relative he- 
quenc>' of occurrence for eadi number is not generally the 
sanie. 



In ahoOBl all cases, we would like the number of elements 
contained in a random sequence to be very large before the 
sequence begins to repeat itself There are methods of produc- 
ing random numbers Uiat rebuilt in the repetitk>n of the se- 
quence after only a very few numbers have been generated At 
tht* other end of the spectrum, there are methods that yidd 
sequences that are non-repeating for lengths of truly astro- 
nomical magnitude. The random number generating facilities 
pfwtded with most high^levei languages are not always as 
sterting in this ropvd as you might expect, though some are 
quite good. 

Usually when you gmerate a sequence of random numbers, 
ywk want them to be unJormly dislnbuled. That is to say that 
there should be the same frequency of occurrence for all 
numbers There are lots of applications that require some other 
distribution, but the starting point for the generation of these 
non-uniform sc^quences is often the uniform distributfon. A 
number uf other okore involved OMisiderations also exist where 
the evaluation of random sequences are concerned, but we 
don t really need to deal with them here. 



RoliUtg Your Own 

When programming in assembly language, you often doni 
have access to a routine that lets you generate random num- 
bers Nevertheless, as we've seen, such a need may well arise. 
Yuii may be able to use the Basic machine Language subroutine 
contained in ROM, but this isn't always possible and might not 



■le»>fg7:Vttfawy, 



be just what you need anyway. There ii i way to produce, 
machine code* random sequences that are non-repeAling for 
Mmmomically long buervais. In addition, these sequences are 
as unibnnK di^ributed as is possible lo obtain. Although we 
haven't examined ofher figures of merit for random sequences. 
it lurns out that these paitkular sequences poitesi many of 
those other desirable praperties is wdL The random se 
quences we'll kiok at here are called linear Maximal Length 
Shift Register Sequences. This sourKb pretty intimidating, but 
using th^e sequences is actually quite easy. 

Before we take a look at the Mhnlque. let's digrev and talk 
about a little hardware for a minute. As the naine suggests, une 
of the earlier implementations of these things invoked digital 
shift registers. The shift registers were connected so as to take 
the value o( the output and one or more other shift register 
oells. add them together MOD 2. and feed the resuh back to the 
input or first shift roister cell» then initiate another shift 
operation. 





FTfiir^l 

Flfure I shows what this looki like lor a shift register with five 
cdls. Note the bit poiMons. or celt^. where the taps must be 
applied to obtain the values that get fed back to the input cell. 
These connections weren't chosen randomly. This particular 
arrangement of taps for a five cell shift register gives us the 
maximum length sequence we are looking for. Some other 
llfldbicfc arrangement would certainty generate an output 
sequence, but it could be a very short one. Consequently, you 
really don^t want to consider any but the particular connection 
of taps that produces the maximum length sequence. Using 
such a connedton, you would get an output stream of 1 s and Os 
that appeared very random indeed. If your shift register had. 
say. 30 cells, the sequence would contain (2t30)-t numbers 
before it started to repeat. If you were generating these num- 
bers at the rate of a thousand per second, very easy to do. the 
aequettce would not repeat for almost 300 hours. 

The problem of how to select the proper taps still needs to be 
addressed. You can build a shift roister with any number ol 
cdls you wmnt, registers with two celb or a thousand are 
equally possible. Each has some configuration of taps that 
makes it a Linear Maximid Length Shift Register. How do you 
know what taps to use? There's an involved mathematical 
technique that will give them to you but that's pretty^ messy. I 
look up the required connection in a table that lists the tap 
positions required for a ahiit regiiterof ghwi length. Figure 2 is 
such a table for shift re^er lengths up to 34 celts. 



figure 2 

Shift Register Connection* 
For Maximal Length Sequences 



CdU / Taps 


Cells /Taps 


Cells /Taps 


2 2,1 


13 13.4,3,1 


24 24.7.2.1 


3 3,1 


14 14.10.6.1 


25 25.3 


4 4,1 


IS 15.1 


26 26,6.2,1 


5 5.1 


16 16.12,3,1 


27 27,5.2.1 


6 6,1 


17 17.3 


28 283 


7 7.1 


18 18.7 


29 29.2 


8 8.4.3.2 


19 19,5,2,1 


30 30.23.2.1 


9 9.4 


20 20.3 


31 31.3 


10 10,3 


21 21.2 


32 32.22,2,1 


II 11.2 


22 22,1 


33 33,13 


12 12.6,4.1 


23 23,5 


34 34.27.2,1 



Shift register sequences of this sort have many and varfed utei 
in the communication electronics field as well as in other aieis. 
We can use the basic theory ourselves to generate random 
numbers using machine language The hardware techniQue 
d^cribed above used binary shift registers to m/tt the Is and 
Qs. Each cell of such a shift register could contain but a single 
bit and. of coune, that is the reason the shift register output 
consists of a aerial bit stream only one bit wide* The theor>' that 
applies to these binary shift registers, however, can be more 
generally stated. Although it seems to have been given little 
attention, you don't have to r«dto yourself to using binary 
shift registers. You could design a shift register with cells that 
can take on any ol a number of discrete values, for instance, 
any integer between and 9. 

It turns out that all the theory applicable to the binary version 
of a Linear Maximal Length Shift Register also applies lo these 
non^binary versions. As always, there is a proviso: with the 
binary shift regnto, wedid our addition MOD 2; with any other 
base (B) we must do our addition MOD B. For example, if your 
shift roister works with the integers from to 9 (that's base 1 0). 
then your addition must be done MOD 10. One other thing: the 
base you select must be smaller than the number of cells in 
your shift register or the sequence that results won't be one o( 
maximum length. For example, if you have an eight cell shift 
register, you have to operate it base 7 (integers from to 6) or 
I 



Doing It tn Software 

Now that we've looked a little at this hardware stuff what can 
we do with it? 

Remember how long the 30 cell binary shift register produced 
Is and Os before repeating If you take this same ^ cell shift 
register, but operate it base 10, say, instead of base 2, the output 
stream will consist of integers in the range of to 9. If you 
generate thb sequence at the same rate as the binary sequence 
we worked with earlier, it wont repeal for 36,533,877 years. 
That's right, millions of years. 




CM course we're much moie interesied in producing random 
numbers with software. Il is very easy to program the computer 
to mimic Ihe opctation oi a shift regis! er. Each of the cells o( Ihe 
shift regiHer is repreieftled by a memory location Since eich 
memory loMion is an eight bit b>le, each cell o( Ihe shift 
rcgiiter could hold any of 256 values, a number far larger than 
you need for this technique What you do is decide on (he 
number ol cells you want to use then set up that many memory 
locations In RAM Rt'fr»re you can use Ihe shift rei^iMpr you have 
lo fill each of the cells with a number. Remember that this 
number has to be less than the tnodulus B vouVe decided on 
(from to 9. for example, if it's MOD 10). Any combination can 
be used except all the cdU can't be zero or no output will result. 
Next, consult Figure 2 to determine what taps are required. 

To make thb software shift register actually shift, you perform 
an addition MOD Bon the values in the cell locations indicated 
as taps in Figure 2. Save this result somewhere temporarily. 
Htatk, load Ihe highot nunbiMl csll (memory location) with 
the next high^t numbered cell's value and so on down to cell 
2. At this poJm, all cells will have the value their predecessor 
had with the exception ol cell 1 . Now lake the stored result of 
the addition and load il into cell I . This comptetei a single shift 
operation and results in the generarion of one number of the 
random sequeiKe. You can u^e the value contained in any cell 
as your source of output but always use the same cell. 



About the ProgruBB 

Program 1 (RNDGENl) is an asembly lani^age listing of a 
propam that implements a 21 cell shift register operated MOD 
10. Note that before you can use this routine you have to fill 
»ch of the 21 cells with aome integer value less than 10. 
Program 2 is a BASIC program that loads the object code for 
RNDGENl and then lets you work with H from BASIC. It will 
ask you to type in a 21 digit number {the leed). Once you do 
this, the machine language routine will start producing random 
numbers Th«e will be printed on the screen as they are 
generated. You might ob^rve the effect of different seed values 
on the output valuea* 

This maeMne language routine could be the basif for a random 
number generator in lots of applications, but is presented here 
mainly to show how easily the concept is prc^ranimed. It might 
be inconvenient to load 21 numbers every time you needed 
this routine. 

Program 3 (RNDGEN2) is a more extensive development of the 
idea. This routine already has 16 of the teed values pre* 
positioned in the shift register celb and you only need to Rjpply 
five others They go in the Htii five cells of the shift register 
{locations $232C through $2330), Then, before any numbers 
are produced as output, the shift register is shifted 2560 times 
This ensures that the original teed has long since disappeared. 
Once this is done, shifting occurs normally. Motke that Ihe ftrst 
lime you enter this program you do i( at I NIT (location $2341). 
The program then perlof ms the 2S60 shift operations described 
above. When thb is completed, an RTS is executed return tng 



OMitrol to the calling program. From here on you enter the 
routine at SHIFT (location $234A) each time you want to 
retrieve a random numl^er* 

Prc^ram 4 does the same thing to demonstrate RNDGEN2 as 
program 2 does for RNDGENl except thai you only enter a five 
digit number. All of the programs will operate in both C-64 and 
C-1 28 mode (40 or 80 column display in C-1 28 mode), 

Both ol these assemUy language pn>grftm5 produce as output a 
lin^e integer from to 9 for each shift operation. Of course, 
you may want a random number of lome other length, say four 
or five digits in width. You can do this easily by taking 
iuccessive values and assembling them accordingly. The exact 
details would depend on how you were using the random 
number generator, whether from mactdne language or BASIC, 
etc. As you can see, it is very easy to produce astronomically 
long sequences of pseudo-random numbers, (this 21 cell 
implementarion generates 1021 numbers before il repeals). 
The technique is relaUvdy straightforward lo program at the 
assembly language level: even so. it is a powerful method for 
producing random numbers. 



PROGRAM 1 : Source Code For RNOGEN 1 



base 


- S232b 




cell21 


- S2340 




ceN2 


- S232d 




ceUI 


- $232c 




Imp 


- $232a 




•-$2341 

i 




shffi 


Ida 061121 


;entry point 




adc C6II2 


;add these celts 




cmp#10 






bcc temp 


;aoc<lO: already rTH>d to 




sbc #10 


;if not, make result mod 1 


temp 


sta tmp 


.store unhl shift is done 




Idx #20 


,# ol limes lo shift 


loop 


Ida base.x 


ehrft Ifom here, . , 




sta base + 1 .x 


to here 




dex 


next lower cell 




cpx #0 


done yet? 




brw loop 


no. then loop 




Ida tmp 


get mod tO addition result . . 




sta cetil ; 


and put in the first ceH 




na 


back to mam prgm. 



end 



FRUCRAM 2: Buk Oemo/LoMler For RNOGENl 



CE 
OM 
IM 
NE 
HO 



1 00 rem save ' 0:pom2 " ,8 

1 10 rem ~ proflram 2 ~ 

120 rem toads and runs rndgenl 

130 rem to demo random # ger>erator output 

140 rem — base loader - - 






3 



lA 
EH 

BJ 

IL 

Jl 
00 

IK 

HO 

KH 

U 

IM 

IE 
CB 
CM 
LF 
EG 
EF 
OK 
OF 
NO 
LH 
AF 
OF 



150 tor a -0 to 35 

160 read b 

1 70 poke 9025 + a,b 

180 next 

190 rem — rrKigenl demo from basic -- 

200 rem 

210 print ' ■ ■ « type any 21 digit 

number - - - * 
220 for a - lo 20 
230 gel k$. It k$ - * • then 230 
240jS-fS4-kS 
250 poke 9004 * a.val(kS) rem ceils 1 thru 21 gel 

seed loaded 

260 print chr$(147);j$ 

270 next 

280 sys 9025: rem -$2341 

290 pnni peek (9004); rem - $232c 

300 goto 280 

310 rem 

320 rem — load data — 

aaOdata 24.173. 64. 35.109. 45. 

340data 10.144. 2.233. 10.141. 

350 data 162. 20.189, 43. 35.157. 

360 data 202 224 . 0. 208. 245, 1 73 , 

370dataH1. 44. 35. 96 



35.201 
42. 35 
44. 35 
42. 35 



PROGRAM 3: Source Code For RNDGEN2 



base 


- $232b 


cett21 


. $2340 


ceil2 


- $232d 


cell 


- $232c 


tmp 


- $232a 


flag 


m S2329 


hicnt 


- $2328 



: parial seed- 

•"$2331 

.byte 3.5.9,4.7,1,4,6.3,2,0.5,7.4,9,8 

•-$2341 



#0 

tiicnt 

flag 



init Ida 

8ta 

sta 

tay 
shift dc 

Ida cellZI 

adc celt2 

cmp#10 

bcc temp 

ibc #10 
temp sta tmp 

Idx #20 
loop Ida base.x 

sta base + 1.x 

dax 

cpx #0 

bne loop 

Ida tmp 



; entry point to reinitialize 
-.2ef counter most sig byta 
iciear flag 

;2Sro counter least sig byte 
:entry after reinitialization 



<tO: already mod 10 
;jf rvot.make result mod 10 
;store until ^itt is done 
:# ol tunes lo shift 
: shift from here. . . 
;tOllflre 
;rtext lower ceii 
idoneyef' 
;no, then loop 
;get mod 10 addition resutl 



laop2 



sta celll 
Ida flag 
cmp#$ff 
bne loof^ 
rts 
iny 

cpy 90 
bne shift 
inc hcnt 
Ida hcnt 
cmp#10 
bne shift 
Ida i$ft 
sta flag 
jmp shift 



;and put in the first caN 
;gei flag 

:in4tial runnup done? 
;no. then continiie 
:yes. back lo mam prgm 
:irx:rement least sig byte 

;fX)t 0: continue 

;0: increment most sig byte 

;runnup done ye*? 
;no. continue 

;yes. set flag 

-.done runnup. shift normal now 



.erKJ 



PROGRAM t; Baiitc Demo/Loader For RNDGEN2 



EE 
GN 
JM 
NE 
HO 
GA 
EH 
HJ 

IL 

Ml 
GO 

IH 
NH 
KH 

U 
PN 



C8 
CM 
LO 
FG 
CP 
OF 
NK 
HH 
IH 
EH 
BJ 
OE 
GJ 
OK 
LI 
EH 
JK 
OK 



100 rem save*0:pgm4 ' .8 

1 10 rem — program 4 — 

120 rem loads and rur« rndgen2 

1 30 rem to demo raixtom # generator output 

140 rem — basic loader -" 

150fora-0to90 

1 60 read b 

1 70 poke 9009 + a. b 

160 neM 

190 rem — rndgen2 demo from basic ~ 

200 rem 

210 print • - - - 5 digit seed - - - * 

220lora«0lo4 

230 get k$: if k$ - • ' then 230 

240^-r$H-k$ 

250 poke 9004 + a.vaKk$): rem cells 1 thru 5 get 

aeed loaded 
260printchr$(147).t$ 

270 next 

280 sys 9025: rem -$2341 
290 sys 9034; rem - $234a 
300 print peek(9004);: rem -$232c 
310 goto 290 
320 rem 

330 rem — toad data — 
340 data 3, 5, 9. 

2, 0. 
0.141, 

24. 173. 

10. 144. 
390 data 35.162. 20.199. 43. 35.157. 
400 data 35. 202 224, 0. 208. 245. 1 73. 
410data 35,141. 44. 35.173, 41, 35.201 
420 data 255. 208. 1. 96,200.192. 0.206 
430 data 208, 238. 40, 35,173. 40. 35.201 
440data 10.208,198.169.255.141. 41. 35 
450 data 76. 74, 35 



350 data 3. 
360 data 169. 
370 data 1 68. 
380 data 201 . 



4. 

5. 
40. 
64. 



1. 
4. 



7. 
7. 

35. 141. 
35.109. 



4, 



41. 
45, 



2.233. 10,141. 



6 

8 
35 
35 
42 
44 
42 




^t^o* I 



N-Body Simulator 
For ITie Commodore 64 



Richard Lucas 
W^ Los Angeles, CA 



I ne solar system ts an example of a multiple-body 
planet is affeaed by the gravitational attractions 
of the other planets and, mostly, the sun. , , 



IntrodurVion 

The motions of multiple astronomical bodio, aOeded onfy by 
the gravitational pull they «iert upon one another trace com- 
plex paths that usually defy easy analytical solution Rnding 
the motions of an arbitran group of N bodies is called the N- 
Body Problem, which, in general, has no analytic solution. 

The solar system is an example ol a multiple-lxxly jyncm. 
Each planet is affected by the gravitational attractions of the 
other planeCf and, mostly. Hie sun. Ju[)iter and its many 
satellites are another multiple body system. Many stars in the 
galaxy come in clumps of two. three, or more suns orbiting 
around one another* 

H one wants to compute the trajectories in an n-body lyslem, 
two basic options are avaiiiUe: an analytical approximation, 
which usually requires sonne experience %rith mathematics and 
celestial mechanks: or numerical integration on a digital com- 
puter. Numerical integration is completely general, and re* 
quires a modest effort to set up and study a ^stem, 

N-Body Simulator (NBS) is a program for the CommodoR 64 
thai solves the N-Body Problem by numerical inligntion. You 
on specify any system up to forty bodies and watch their 
motions as they are plotted in the Commodore Ms lugh 
resolution bit map mode, Btsidt;. having v^uett a di^lay tool 
for astrodynamidsU, the program is educational since it iUow 
you lo reach in and mdnipukjli- celestial systems. (Ttie screen 
displays aj e also very attractive, but this is r>ot the main point of 
the program.) 



Simulator Mathematics 

The motion of »ch body is described by seven attributes: the 
body's location in xyz coordinates; the body's velocity in xyz 
coordinates (whKh are referred to as u, v, and w): and the mass. 

NBS uses a coordinate ^stem compatible with the Cbmmodore 
64 high resolution screen to display body motions. The x-axis 



ts horizontal and pwith^e going to the right, the y-axis is 
vertical and p(»sitive downward, and the z-axis. which reaUy 
can't be seen in the display, goes directly into the sown The 
upper left-hand comer of the screen is Ihe coordinate (0.0,2). 
and the tower right-hand corner is the coordinate (319 J99j)l 

Body positions and velocities are stored in terms of ' pixeb" 
and "paels per unit time ". The distance each pixel represents 
depends tqion the scale selected Three scales arc available in 
NBS: 

K I pixel « lot? kilomiiufi 
I mass - tOOO kilograms 
1 time - 1 day 



2. ] pixel = 

Imiss - 
I time« 

3. 1 pixel = 
t mass =^ 
1 time m 



I astronomical unit (one AU equals the 
distance from Ihe earth lo llie sun) 

I earth mass (5,9742x10124 kilograms) 
I day 

I Ot6 meters 
I kilf^ram 
1 second 



Scale I is appropriate for displaying the inner solar system out 
to Mars, Scale 2 allows the entire solar sv-stem to fii on the 
screen (though the orbits of the inner planets wont be vety 
distinguishable). Scale 3 is intended for displays of nev-*Eatth 
space. 



Stmulntlon Operation 

The NBS OHninand screen shows the attributes of one body 
from the system currently in memoty and a menu of com- 
mands. The body attributes are displayed in a window. You can 
determine which body is displayed in this window by pressing 
the Fl or F7 keys. All commands can be executed from the 
main menu Simply press the highlighted letter corropondirig 
lo the desired comniand. 



Exit 
Ptol 
NewSysteni 



sCale 
Display 



Load 

Save 

PrevfcNii Body 

Next Bod) 

X, Y. Z Pcwtion 

U. V. W Velociiy 

Mmi 

Time 

Rename 



Cnminiinclii 

End the program. 

Stwt the si mutation. 

Input (he parameters for one or more bodies. The program 

prompts for the numt>er of bodies in the system. NBS doesn't erate 

any values presently stored, so pressing RETURN at any prompt 

without entering anything simply retains the previous value. 

Change the scale tned. 

Change from sprite mode (o high resolution mode, or vice versa. 

In high resolution mode the points representing the bodies are not 

erased, so each body gradually leaves a tracing of its path acrou 

the acieen. Sprite mode can display a maximum ol eight bodies. 

Load an n-body system from disk. 

Save the n-body system presently in memor)* to disk. NBS 

automatically adds the suifix ".nb" to the file name. 

Display the parameters of the previous body In the sytltem list. 

Display the next body. 

Enter a new value for the body currently in the data window. 

Change the vfkicitjr of the body currently in the data window. 

Change the irass of the body currently displayed. 

Change the time step interval. 

Change the name of the body in the data window. 

Some Situation* To Try 



Pressing any key stops the simulation, 
but rwte that the cuneni positions are 
lost when the display is inif rrupted in 
this manner. Pressing the FI ke>' inter- 
rupts the simulation and stores the cur* 
rent positions so that you can choose to 
pick up where you Idt oft. 

Sinmiation Strategic 

AccuiiKy depentb on the size of the 
i meg r^ ion time step. Accuracy is 
achieved b>' using a small time step On 
the other hand, a small time step makes 
the simulation proceed more slowly. 
The best compromise is the largest time 
step that gives toceptable accuracy. 

For new situations trial and error will 
reveal the best time step. Start with a 
large time step (which takes less compu- 
tation time), then decrease the time step 
until good results are achieved. 



Inner •otoj' system: 

(For Jui>e 1. 1986 in heliocentric coordinates based on the ecliptic of 1950,) 

scale > 1 



Body 

I 

2 
3 
4 

5 



Name 

Sun 

Mercury 

Venus 
Eanh 
Mars 



Mass 
1.989e27 
5.97e20 
4,87e2l 
S.97e2l 
6.42e20 



X 

ISO 
147.86 

140.62 
144.74 

147ft4 



Y 

100 
104,23 
10S.21 
85.771 



Z 



5459 

6143 

I.22e-3 



78.184 -.4063 



U 


-4605 

-.1482 

.2372 

.2165 



V 


-.1720 
-.266 
-.09 
-2.76e-3 



W 


.027607 
4.75e-3 
5.5e-6 
-5.33e-3 



Outer solar system; 
(For June 1 , I9S6 in heliocentric coordinau ^ : 

icak«2 



n the ecliptic of 1950.) 



Body* Name 

1 Sun 

2 Jupiter 

3 Saturn 

4 Uranus 

5 Neptune 

6 Pluto 



Mass 

332931.6 

317.867 

95.243 

I4.S459 

17.2406 

2.176e-3 



X Y Z 

150 100 

IS4.63 98.144 -.09663 

I4S.96 90.827 .31820 

149.67 80.722 -.0684 

151.71 69.756 .5789 

126.77 83.627 8.443 




2.7l9e-3 

4.789e-3 
3.903e-3 
3.108e-3 
2.044f^3 



V 



7.36»e-3 

■2.26e-3 
■2.477e-4 
1.942e-4 
■2.8S8C-3 



W 



■9.020e-5 
-l.53e-4 

5.143e-5 
•7.629e-5 
■3.062e-4 



Body* Name 

1 Sun'l 

2 Sun'2 

3 Sun "3 



Trinary star system: 
scale- I 

Mass X Y Z 

3e27 150 90 
3e27 150 135 
Ie27 50 100 



U V W 
.15 
.15 
.07 



Binary star system: 

scale > 1 
Body* Name Mass X Y Z U V W 

1 Sun'l 3«27 150 100 -.15 

2 Sun '2 3e27 ISO 125 .IS 



Kemplerer's Rosette 

scale - 1 

Body* Name Mass X Y Z U V W 

1 Sun'l 1.8e29 120 70 I -1 

2 Sun '2 t.8e29 180 70 1 10 

3 Sun«3 I.8e29 180 130 -1 10 

4 SunM 1.8e29 120 130 -1 -1 



Simple System 

•ale ■ 3 
Body* Name Mass X Y Z 

1 Heavy leSO 150 100 

2 Ught lelO 150 150 



U V W 

1 



C^ 



111 



IK 
00 

IF 
GP 
Nl 
FO 

DC 
NF 

EB 
MM 

DM 

CG 

ID 

ON 
CB 
ME 

LG 

AA 

MA 

PC 

Fl 
FP 
NJ 
PL 

NO 

NH 
MN 
PG 
CJ 
AK 



AP 
00 

CL 

KF 

EL 

JL 

NJ 
JK 

BO 

IQ 

06 

U 

Jl 
BC 



N Body Simulator 

100 ram n-body smnUalor 

110ramv«raion6 09 

1 20 rem by richarcJ lucas 

130 

140 rem inftialize 

ISO pote203S.pMk(S5) poke2039.pMk(56} 

160 pok« 56.62 pC3to 55.0 clr 

170 <*m x(40).y(40).2(40).u(40).v(40) w(40). 

x1{40J.y1(40).2l{40) 
1 80 dim fn(40).om(40).e2(7) 
190 dim x0(40).y0(40),20(40},u0(40).v0(40). 

w0(40).a0(40). b0(40).c0(40) 
200 Otn ex(7).un(3).urT${3).tu$(3) 
210 ton - 1 to3 readtuS(i}.un$(i) rT«xt 
220 data ' days ' . ' 1 0TTklomeiers-lons-days '. 

* days* ,* AU-Earth mass-days *." seconds * 
230 data 1000km- kg -sec 
240 goeub 2820 
250 g - 6 67e- 1 1 ;sy - 1 :cf - 40;c4 - 504.C7 - 7 

:ce-248:vi-53248:hi- vi-t- 16 c5 - 255 
260 hr - 1 6« 1 024 (^ - ■ epncdis • +chr$(133) 

-f ChrS{136)+ 'xyziJvwmtr*:tp-0 
270 nb - dt - 1 d2 - dfdt/2 d3 - d2-dU3 

:(M-d3*dt/4cb-1 
280 fon "0to7 ex(i) - 2t(7-i):next 
290 Ion - 0lo7 e2(i) - 2ti next 
300 un<1} - 1000>8640Gt2/1e10t3 
310 un(2) - 5 9742e24.86400t2/1 49S9789e1 1 13 
320un<3]-1/1e6t3 
330 poke 53280.0:poke 53281 .0:pnnt chr$(14) 

+ chr$(8) + chr$<151); 

340 b$ -•* 1$ •*■ fori - 1 tcaabS - b$ + chr$(32) 
;IS-l$-i-chrS(l92}nexli 

350 bS • chr$(29) + b$ t- chrS(29) 
360: 

370 rem main loop 
380 oosub 2460 
390 gosub 2620 
400 print •>•; 

41 get a$:iifa$ - * * then 410 

420 fon - 1 tol SrfaS - midS(oS.i. 1 )then pnntal 

;goio4SO 

430 next 

440 0010 410 

450 on I goto 490.510.1970.2900.3070,21 10. 
2250.3190,3230 

460 If i - 1 6 then input ' New name pf body '. n$(cb) 

rgoto 370 
470 mput * new value * ;nv 
480 on 1-9 goto 2390,2400.24 1 0,2420.2430. 

2440,2380,2450 
490 p0i(8S5.peek(2038] poke56.peek(2039) 

:clr:end 
500: 

510 rem plol trajectoriet 
520 <f nb - then pnnt * No bodies m current 

syMm. * :goto 370 
S30 if Splhen 6lO:rem skip hires for sprites 
540 rem set up hires screen 



Gl 

GO 

MP 

AL 

FN 

MN 

AK 
OP 
OP 
NE 
OK 
OH 
Nl 
MJ 
Nl 
MJ 
LK 
10 

Ifn 

lA 
NM 
AS 
GC 
DE 
ND 
EC 
AO 
AP 
AA 
MK 
HK 
FD 
FE 
FF 
CJ 
AK 
DL 
GM 
KL 
AN 
NO 
HO 
KB 
KB 
LC 
MD 
OF 
BF 
PN 



PP 
MD 
BA 



550 poka 56578. peek(5657e)or3 ram switch to vie 

bank 1 (T6k-32k} 
560 poke 56576.(pmk(56576)and252)or2 
570 poke S3272.(peek(53272)andl5)or128 

rnm char screen is in 9th K 
580 poke 53265 peek(53265)or32:rem turn on 

h*res screen 
590 poke 820.0:pokd 821 ,64 poke 822.0 

:poke 823.96 poke 251 ,0 sys 49152 
600 poke 820,0 poke B2 1 .96 poke 822.231 

:poke 823,99: pote 25 1.1 6 :$ys 49 1 52 
610 ifspthenfon - vitohi pQtai,,:naxl 
620 if5pthenal«0 fori -ItoBal -al or 

HK - nb)*2t(K 1 ))ne)ct: poke vi + 2 1 ,a1 
630 rfspthenpoke 53281 .0 prfntchr$(147> 
640 1-0 
650. 

660 rem worn alart paran^ers to working arrays 
670 fori -Uonb 
660x<i)-x0(i) 
eB0y(i}-y0(i) 
700 z(i)- 20(1) 
710u(i)-u0(!) 
720v(»)-vO(J} 
730 w(i) - wO(i) 
740 next 

750 rwn compute accet at time dt before start 
760fon-ltonb 
770aO(i)-.:bO(i)-.:GO{i)«. 
760 next 
790 fori - 1 tonb 
600ax>.:ay«.:az«. 
etOforj-iltonb 

&20rfi-|then9t0 
830 dx - x(j)-x(i) 

S«ldv-y(i>-y(0 

850d2-zO)-z(i) 

660 r - sqr(dx*dx ^ dy*dy -f dz*dz) 

B7Oi3»f*rT/om(0 

860ax-ax + dx/r3 

690ay«ay + dy/r3 

900 az - az + dz/r3 

910 next 

920 x1(i)- xp)-u(i)*dt + ax-d2 

930 y1{i) - y(i>-v(i>dl + ay*d2 

940 z1 (I) - z(i)-w(i>dt 4- az*d2 

950 next 

960 fori -1tonb 

970ax-.:aya .az-. 

980forj-1tonb 

990 tfi.fthen 1080 

1OOOdx-x10)-x1(j} 

t010dy-y1(iy-y1(i) 

1020dz-2T{j)-2l(i) 

1 030 r ■ 8qr(dx«dx + dy*dy ^ dz-dz) 

1040r3-r*rT/gm(i) 

1050ax-ax^dx/r3 
1060ay-ay + dy^r3 
1070az-az + dz/r3 
1080 next 
090aO(i)-ax 



CM 


iiOObO(0-ay 


LM 


LB 


Iii0c0(i)-az 


ML 


EG 


1120 next 


OP 


ON 


1130; 


HE 


BP 


1 1 40 rem oalcUM* now tyttwn itata 


IP 


CM 


llSOton-llonb 


EF 


AO 


1t60a1-.:b1-.:c1-,:a2-.:h2-.:c2-. 


HK 


FK 


1 1 70 for) - 1 lonb 


NE 


PN 


\^SOdlmflt}en^270 


Mw 


(£ 


r too dK " x(j)it(i} 


lA 


IF 


1 200 dy - y(|)-y(.) 


PG 


IG 


1210dz-zO)-z(i) 


DN 


EB 


t220 f -SQf(dx»d)( + dydy + dz'd^ 


EN 


PA 


1230r3-rT»r/om(j) 


IM 


KN 


1 240 a1 - a1 4- dx/r3 


BP 


10 


1250 b1 -b1+dy/r3 


EE 


GP 


1260c1-c1+d2/r3 




KP 


1270 next 


OF 


IP 


1280jO-(a1-aO(i)ydt 


OH 


HA 


I290k0-{b1-b0<i))/dt 


01 


QB 


1300IO-{c1-cO{i)ydl 


OJ 


ND 


1 31 x2 - xO) > u(i>d1 -1- a1 • d2 + jO*d3 


Kl 


CF 


1 320 y2 - y(i) -K v(i)-dt -H b1 'dZ + k0*d3 


KJ 


HQ 


1 330 22 - 2(i) + vw[ij»dt + Cl 'd? + iD»d3 


KK 


PE 


1340fofj-1tonb 


DH 


01 


1350ifi-ilhan1440 


FF 


DM 


1360dx-)((|Vx2 


MB 


DN 


1370dv-y{i)-y2 


ID 


DO 


138Od2-20)-z2 


PH 


OL 


1 390 r - 8qri(dx 'dx + dy * dy + dz'dl) 


AK 


JL 


1400r3-frT/omQ 


AO 


Jl 


14't0a2-a2-fdx/r3 


K£ 


HJ 


1420b2-b2>dy/f3 


tL 


FK 


1430c2-c2-»^dz/r3 


AO 


EK 


1440 naxt 


LA 


D£ 


I450ji-(a2-aiydi 


BN 


CF 


1460k1-{b2-biydt 


NL 


BG 


147011 -{c2-ciydt 




DK 


1480ml -(a2-2*a1 faO(i))/(dl*d1) 


NA 


GL 


1490 n1 -(b2-2'bl +bO(0y(dl*dt) 




JM 


1 500 01 « (c2-2»cl + cO(i)V{dt-dO 


PP 


OP 


1 5 10 xi{i) - x(i) + uO'dt + ai -da + ji -dS + ml •d4 


BO 


EB 


1 520 y 1(1) - y(i) + v(i)*dt + b1 -da + k1 -d3 + n1 •d4 


IK 


KC 


1 530 2 1 (i) - z(i) + w(()»dt ♦ c1 'dZ ♦ 1 1 'dS + 01 •d4 


HD 


MC 


1 540 u 1 0) - iXO ■*- a 1 -dl + )1 'dZ t- m 1 •dS 


IP 


BE 


1 550 v1 (i) - v(i) + b1 'dt + k1 -dZ + n1 .d3 


OB 


GF 


1 560 w1 (i) - w(i) -»■ Cl •dt + 11 'fC 4- 01 'dS 


HC 


KL 


1 570 aO(i} - ai 




KM 


15eObO())-b1 


PF 


KN 


1590cO(i}-c1 




EE 


1600 next 


OH 


OL 


1610: 


AB 


EG 


1620 tori -Itortb 




10 


1liaOx<i)-x1(i) 


FN 


HE 


1640y(i>-y1(i) 


OJ 


GF 


1650z(il-z1(i) 


00 


HE 


1660u(i)-u1{)) 




OF 


1670vli}-v1{i) 


u 


FQ 


16e0w(i)-w1(j) 


AL 


10 


1690 X - x(i) if>c(ij< Ofx(i)>319ltian1 720 


OJ 


PA 


1 700 y - y(i);i1y(iK Of y(i)>19ahen1 720 


HH 



1710gosi^}2710 

1720 next 

1730e-l + cft 

1740 if sp then pffntchr$(19).1 

1750g«a$(fa$** 'then! 150 

1760: 

1 770 rem restore character screen 

1 730 poke53265.pe6k(5a265)ar>d223 

1 790 poke 5657e.peeM56578)or3 

^800 poke 56576,(peeki565?6)and252)Of3 

1810 poke 53272.(peekp3272)andiS)Qr16 

1820 poke yi -1-21. 0:rem turn off sprrtes 

1830 poke S328 1.0 

1640 ft a$-chr$(l33) then 1860 

1850 goto 370 

1860 pfini chr$(17);'aonf>o presernsy^em in 

memory * rgoeub 3160 
ie70fori-1tDnb 
1880x0(i)-x(i) 

1890yO(*)-y<i) 

1900z0(i)-z(i) 

1910u0(i)-u(i) 

192OvO(0-v(i) 

1930wO(J)-w(i) 

1940neKti 

1950 9«o 370 

1960: 

1970 rem get new syelem from ueer 

1960 input* Number of bodies' ,nb 

1990 rfnb<1ornb>50then370 

2000 for i - 110 nb 

2010cb-i;0osub2460 

2020 prtnt* Name of bO(ty * l::^putn$(i) 

2030 ttlen(n$(i))>2Sthen2020 

2040 prmt ' Mass of body * i; 

2050 input m(i) Qm(i) - g-m(i)»un(sy) 

2060 input 'Input locaton in x,y,2 form*; 

»0(»).vO(i).20(^) 
2070 mput' Input vetoctty m u.v.wform ' ; 

uO(i).vO(i),wO(0 
2080nexti 
2090 goto 370 
2100: 

21 10 rem load system description from d«k 
21 20 print ' Load system data from dtsk ' 
21 30 input ' lype name of data f i4e^ M 
2140 rf len(a$)>13 then print ' Too long. ' 

goto 21 30 

2150 open 15.6JS:open 2.8,2/ 0:' ^«t 
+ Vnb,s.r' 

2160 gosub 3170 

21 70 If erOOtfien pnm er$(1):erS(2).er$(3),er$(4) 

:go6ub 3 1 60:goto 2230 
2ie0input#2.sy.nb 
2190 fori- itonb 
2200 inputf 2.n$(i).x0(i> yO(0.zO(i).uO(i>. 

vO{i),*0(i)nXil 
22 1 om(i) - 0* m(»)* un(sy) 
2220 next 

2230 doee 2 dose 1 5 cb - 1 
2240 goto 370 



Woy HBw' 



GE 
DM 
OJ 

OH 
CJ 



1 



GK 

ON 
EO 
AG 



MO 

NN 

DG 

NO 

JE 

FF 

FF 

B6 

NG 

oe 

FA 

MH 
EK 
EA 
CA 
EE 

PJ 

FK 

DM 

JD 
AN 

FJ 
HL 
CH 
DF 
GK 
EH 
JM 
JA 
IN 

JO 
GK 

MD 
OJ 
ON 
HO 
00 
FK 
AN 



2250 ram save current system to dsk 

2260 print ' Save current systam. ' 

2270 input ' Type name oftie' :a$ 

2280 rf lan(aS)>l 3 then print ' Name too Iohq * 

goto 2250 
2290 open 1 5.8. 1 5;c$ - chr$< 1 3) 
2300 opan 2.8,2. * 0. " +a$ + " .nb.s.w * 
2310gosub3170 
2320 rt er OO then print er$<1 );w«<2);ar$(3);erS(4) 

gc»ub3160:go«o2230 
2330 print#2.sy.c$,nb 
2340 fori - 1 lonb 

2350 prini»2.n$(i);cS;)(O(i);c$;yO(i}.c$.zO(i).c$.uO0; 

c^.vO(i).c$.vrtHi).c$.m(t) 
2360 next 

2370 ctoae 2 close t S.goto 370 

2380 m(cb) - nv.Qm(ct)) - g*m(cb)«un(sy).QOlo 370 

2^0 x0(cb) - nv.goio 370 



2400 yO(cb) - nv 
24lOzO(cb)-nv 
2420uO(cb)-nv 
2430 vO(cb) - nv 



goto 370 

goto 370 

goto 370 

:goto 370 
2440 wO(cb) - nvigoto 370 
2450 <JI - nv d2 - dt*dt/2 cl3 -d2*dl/3 d4 -d3*dl/4 

:goto 370 
2460 rem display current system v^ues 
2470pnntchf$(147)* N-BODY SIMULATOR" 
2400 printchr$(1 76):l»;chr$(1 74); 
2490l1$-chr$(22t) 

2500pfintlU* name ' n$(cb).talD(79).l1 $; 
25l0pfinitl$- bo<ty#*cb;tab(l7)-maaK'm(cb). 
tab09)tiS: 

2520 pnntl 1 $ * k: ' 3iO(cb>:tab(60J ' u: • uO(cb); 
iab(79).l1$; 

2530 prinll t $ • y: ' yO(cb).tab(30) * v: ' v0(cbj; 
lab(39).l1$; 

2540 pnntl 1 $ • z * z0(cb);tab(60) ' w * wO<cb). 
tBb(79),ii$; 

2550 printchr$( 1 73), t$.chr$( 1 69) 

2560 print " number ol bodiat: * nb 

2570 print " time mtarvaJ ' dt.tu$(sy) 

2580 pmt * unit syslam; * un$<sy) 

2590 If sp ttien print * sprite mode ' .chr$(1 7) return 

2600 print * hires po*nt mode * .chr$(l 7):fe(urn 

2610; 

menu 

•t fcWo t BJew system 

isplay BlM^' 

prevbody |l7f 



2620 rem dis 
2630 print • 
2640 print " 

2650 print * 

nextb^J 
2660 print* 

position 

2670 print ' 






position Q.Q poaton 





veloaty 




vetocify 




vtkjDty" 

2660 print 'Biji Q Qme |r|ename 

2680 return 

2700 rem plot poinl on hifet scraan 

2710 If sp-1 then 2750 

2720 nH • hf + (yandc8)'Cf + (yandcT) + (xandc4) 

2730 poke ml.peek(ml)orex(xandc7) 

2740 return 



DK 
Fl 
AC 
NC 
JK 
U 

oe 

FO 
II 

MK 

MN 
00 

MH 

MC 

Jl 

BK 

MQ 

IM 

LL 

NO 

QN 

JN 

AH 

AA 

EJ 

U 

HM 

MN 

PM 

EC 

BK 

IG 

OJ 

nffv 

BK 

LO 

BK 

BL 

BO 

EE 



FA 
LK 
HP 
CN 
FO 
IP 

CK 

MK 
LK 
OB 

FB 



2750 if i>e then return 

2760 x-x-f24:y-y -1^50 

2770 pot« vi + 0- 1 )• 2, xandcS 

27eOpok0vi-*^i-2*Vy 

2790 rfx>cSir>enpokehi,peek(hi)ofe2(K I) 

2dO0 ifx<256thenpoKehi.p©ek(bi)and(c5'e2(i-l)) 
2810 return 

2820 rem ml code for high speed erase 
2830 1- 49 152 

2840 readmc:ifrnc-256ihenreturn 
2850 poke*,mc:i- i + 1 :goto2840 
2860dala173. 52. 3.133. 2,173.53.3,133.3 
2870data165,251. 160, 0, 166. 3 
2880datal45. 2.236. 55, 3,208. 7.166,2,236 
54.3.240.9 

2890data230.2,208,236. 230.3, 76.14.192. 96, 256 

2900 print chf$(147); 'Seiecl asystem 0* units " 

29t0pnnichr$(l7)/r 1 pixel - 10t7WometefE' 

2920 print ' 1 mass - 1 000 Mograms ' 

2930 pmt * t tinr»e - t day' 

2940 print chr$(l 7). *2 1 pixel - 1 AU {earth radtus)' 

2950 print ' 1 mass * 1 earth mass* 

2960 print ' 1 time - 1 day* 

2970prjntchr$(17).'3 1 p<xei - lOOOkiometers' 

29B0 print ' 1 mass - 1 kiogram* 

2990 print * 1 time - 1 secofKJ* 

3000 pnnt Input ^ Which system " ;8y 

3010 if By<lorsy>3then370 

3020 fori >1tonb 

3030 gm(i) - g-m(i)»un(sy) 

3040 next 

3050 goto 370 

3060: 

3070 rem swttch pkx systems 

3060 if sp - 1 then sp « goto 370 

3090 sp-1 

3100 for; w i5a72tolSe72 ^e*64:potei, .next 

rem btank out sprite mages 
3110 tori -0to7 potel 5872 + 1*64 ,224 

:poKel 5875 + 1»64. 224 next: rem form dot shape 
3120 fori - 0!o7poke2040 + »,248 + inext:rem set sprite 
poiniers 

3130 lofi ^0to7 pokevi + 39 + M+ 1:neKt:rem set sprite 
colors 

31 40 poke VI + 29.0 :pofcevi + 23,0 remcompress 

sprites 
31 50 goto 370 
3 1 60 f orde - 1 to 1 500 next; return 

3 1 70 inputi 1 5.er$( 1 ).er$(2).er$(3).er$(4) 
3 1 80 er - vaKer$(l )}: return 

3190 cb-c5-l If ctK1 then cb-nb 

3200 pnntchrKl 9)chr$(l 7)chf$(t 7):b$:b$;b$;b$;bS 
:prinlohrS4l9) 

3210 gosub 2480 

3220 fori - 1to6:printchr$(l 7);:nexti pnntchr$(29): 
:OOI0410 

3230 cb « cb+ 1:if cb>nb then cb - 1 

3240 gcrio 3200 

3250 poke53272.peek(53272)and247 

3260 pQke53265.peek(53265)and223 



A Two-Button Mouse 



Anthony Btyant 
Winnipeg, Manitoba 



« m 



.experimenting with the C-1350 Mouse, and more. . . 



[f you are presently using the old digital |oystick or paddles, to 
move a cursor around the screen, or draw with, then join the 
mouseketeen - tr)' this new mouse! 

On the C-128 (or C-64 with Super Expander cartridge) from 
BASIC, you can read the mouse with the JOYQ function. The 
left t>utton is read like the * fire ' button. Only the left button! 
But, you say iure did?) this mouse, which has the same 
physical appevance as the Amiga mouse, has two buttons - 
Ml and right! 
(Hmmm) 

As no mention is made of the right button in the manual. I 
decided to disect this little critter to see why. 

Mouac nnouti 

Internally, this is a state-of-the-art mouse. IVo optically- 
encoded discs, set in motion by a rolling ball generate phase- 
quadrature pulses. ThcM are decoded in hardware (using 
op-amps and comparators) and four outputs are generated - 
UP, DN, LFT and RHT. TVo active pushbuttons are also output! 
My findings are tabled in fnCURE 1. 

FIGURE h Control Port PIncHita 



Pin 


Joy 


Mouse 


SHdc 


1 


Up 


Up 


- 


2 


Down 


Down 


- 


3 


Lett 


Left 


Button 1 


4 


Right 


Right 


Button 2 


5 


- 


- 


PotY 


6 


Button 1 


Button 1 


• 


7 


+ 5V 


+ 5V 


+ 5V 


8 


GND 


GND 


GND 


9 


- 


Button 2 


PotX 



RGURE I shows the plnouts for three types of Control Port 
input devices for comparison - the digital JOYsttck, the 
MOUSE, and the analog joySTICK. On the C-1350 mouse, the 
left button comes out on Pin 6 - same u the JOY ' fire * button 
and the right button comes out on Pin 9 - same as the STIC!Cs 
POT X line. POT X and POT Y are inputs (READ ONLY) to the 
A/D converter used to digitize the analog position of potenti- 
ometers. The diagram below of register SDCOO of CIA 1 shows 
the bit distribution for each device's digital logk iines< 

In order to use the right button output, which like the left 
button output. Is simply a switch closure to ground, a combina- 
tion of digital and analog techniques is needed. 

FIGURE 2: Analog Joystick Schematic 



DE-9S 




FIGURE 2 Is the schematic of a two button analog joy^ick. It 
could also be for a graphics pad. or other homebrew configura- 
tion type of input device. It graphically shows that all thai is 
required on the POT X line is a potentiometer between Pin 9 
and hn 7 ( + 5v). 





7 


s 


CUl 

5 


- Register 90COO 
4 3 2 


1 





Joy 


Poo 2 


PonI 




BTN 1 1 Right 


Left 


Down 


Up 


Slick 


Port 2 


Portl 






BTN 2 


BTNI 






Mouse 


Port 2 Port 1 




BTNI 


Right 


Left Down 


Up 




FIGURE 3: C-]3St 




FIGURE 3 Is a simple schemalic of ihe C-I350 mouse. The left 
button is BTNl and the right button is BTN2, The Control Port 
connects BTN2 with register $D4I9. This register Allows the 
mkroprocessof to read the * position ' or. in this case, the * 
logic state ■ of the POT X line, with values ranging from $00 at 
minimum reiiMance (« logic high) to IFF at maximum raiF 
tance ( » logic low). Switch closure generates the logic low, and 
what is needed to generate the logic high is a 'pull-up' 
resistor between Pin 9 (BTN2) and Pin 7 ( ^^ 5v), 

Mouae Modiflcallon 

Ex pgtmi m ln g with a wtabte potentiometer and scope, I 
found a vatue of 47k to be about right for the 'pull-up' 
resistor. It's not critical, but should range between 22k and 
100k. 

There is room inside the mouse for one resistor. 1 used a tiny 1 / 
8 watt 47k rctlstor. Also required is a Phillips- head screw- 
driver and a fine point low-wattage soldering iron. 

TWo screws on the underside of the mouse hold the case halvei 
together, IVro aoews inside hold the px. board assembly (and 
pyahbutton sub-board) to the bottom case halt. 

FIGURE 4: Mouse Modincation Schematic 




FIGURE 4 shows the layout of the p.c board. The mouse cable 
plugs into a Block Plug cm the board 

The colour code of the Block Plug b as follows: 



Block Plug Pin 


Colour Labd 


1 


ydlow RHT 


2 


ormgi tPT 


3 


red DN 


4 


brown UP 


S 


white GNO 


• 


blue + 5v 


7 


peen BTNl 


t 


black BTN2 



Solder the rolator between pins 6 and S ol this Block Plug on 
the foil side and re-Miembte the mouie. 



Mouae Machine Code 

Now that we have a right button with two diacsmable Io0c 
states, some code is needed to use it. This is t>pical coding, 
modularized so that you can adapt it to your specific needs. 

The object is to maintain % and y coordinates and report button 
ttatua. 



;def ine variable labda 
XPOS BVTO 
YPOS .BVr 
BTNS BYTO 



X position 
3Avey position 
3ive btn status 



:subrouttne to read Control Port 2 



RDPORT SEl 

LDA'SCO 
STA $DC02 
LOA'SSO 
STA SDCOO 
LDX'SOO 
INX:BNE»^I 
LDX $D4I9 
LDY ID41A 
LDAnFF 
STA SOCOO 
RTS 



lock out keytxiard 

3d ddr to read 

read Control Port 2 
allow time lor 
lines to aeftle 
readPOTX 
readPOTY 



reset Port 2 



You could now simply store the 'absolute position' % and y 
coordinates |ust read, for the analog }oySTICK. but imperfec- 
tions in the pots results in jitter on the screen. Some finesse is in 
order! A moving avera^ algorithm smooths out the rough 
spots. 



ftPJi) £I£CrtMrCi ^.C. BQMB 



f. 



^J 



;5ubrcxjtji)e for moving average ilgDrithin 



AVRC 


BCS AVRCP 


:if sign positive 


AVRGN 


EOR'-l 


;if itt-gdtive. do 




ADC'I 


:reversesubt 




LSR 


;allow half-weight 




EOR "-I 


;inven byte 




CLC 


;lo preserve sign 




ADC'I 


* 




CLCRTS 


* 
1 


AVRCP 


LSR 


;alluw hdlf-weighl 




ciJCRrrs 


;to the t^e 



Movce 



Getting dbsuluk* poviiiun' fmtn tlie MOUSE is not possible. We 
have only 'relative position' to work with - incrementing or 
decrementing XPOS and YPOS - m the mome moves. 



Putting thb altogether yiekb a simple, smooth roudfie for 
getting the absolute position* from the STIOC. 

;main routine to read IheSTIGC 
STICK JSR RDPORT; 

LOA SDCOO ;read Port 2 



;filter BTN 1 & 2 
;inveft logic 
;savcBTNt&BrrN2 
;^ore x in XPOS 
musing a simple 
:movinK average 
;algurithm 
;updaleXPOS 
storey in YPOS 
;using the same 
;algorithm 
;and update Yi*OS 



exit 



AND'SOC 
EOR 'SFF 
STA BTNS 
TXASEC 
SBC XPOS 
JSR AVRG 
ADC XPOS 
STA XPOS 
TYASEC 
SBC YPOS 
JSR AVRG 
ADC YPOS 
STA YPOS 

;qow lest the buttons and 
TEST LDX '$FF 

STX $DC02 

CU 

LDA'4 

BtT BTNS 

BNEBTNI 

ASL 

BIT BTNS 

BNEBTN2 

RTS 
BTNI LDA '-1 

.BYTI2C 
BTN2 LDA '1 

RfTS 



The Z*fljg It Kl if no buttuns wer^ prand and clew other- 
wise. Use a BEQ to test for buttons pressed, after a JSR STICK 
call. The accumulator knows which button was pressed. Use a 
BPL or BMI to check which button is active. 



ddr 

finished with Port 
test bit 2 
of BTNS 
if BTNI preaaed 
test bit 3 
of BTNS 
if BTN2 pres^nl 
exitZ>1 nobtns 
flag for BTNI 
skip over 
flag for BTN2 
;exitZ-0 



;main routine to read Ihe MOUSE 


MOUSE 


JSR RDHORT; 




LDAIDCOO 


:reKlPort2 




AND '$10 


JilterBTNl 




STA BTNS 


3ave bit 4 




TXA 


;nidPOTX 




BMI LOW 


;discern stale 


HIGH 


LDA '120 


3et bits 




.BYTJ2C 


;s)(ip over 


WW 


LDA "$00 


:dr bit 5 




ORA BTNS 


:combinebits 4&S 




I.SR.LSR 


;shifl to bits 2 & 3 




EOR 'SFF 


; invert logic 




STA BTNS 


;save BTNI & BTN2 


;now we 


ham our k-ft and right buttonst 




LDASDCOO 


;reid Port 2 




AND'WF 


;filter directions 




CMP '%0P 


;any moveaitnt ? 




BEQ EXIT 


;rfo. finish up 




TAX 


;yes, mouse rolling 


UP 


AND*I 


xheckup 




BNE DN 


V 




i\C Vl'OS 


1 


DN 


TXA 


* 




AND '2 


;check down 




BNE LFT 


1 




DEC YPOS 


4 
t 


LFT 


TXA 






AND '4 


IXStttCH 101 




BNE KHT 


■* 
1 




DEC XPOS 


■ 
1 


RHT 


TXA: 






AND '8 


xheck right 




BNE EXIT 


* 




INC XPOS 


4 
1 


EXIT 


JMP TEST 


:test buttons and ex: 



Use a BEQ to lest lor buttons pressed, after a JSR MOUSE call. 
Use a BPL or BMI to check which button it active 

The 'relative mm^ement' of the MOUSE n^utirte is ver\' respon- 
sive. The speed ol ntovcnient diid tht'areaolrTiovejiK*nt, i.etfie 
■ fed " of the nfKHtse depends on how often the MOUSE routirw 
is potted. Rossi bitittes, I learwlolhe mouse progrdtiUTier! 



Universal EPROM 
Programmer Update 



Tim Bolbach, P.Eng. 

Toledo, Ohio 



The Uniuersal EPROM Programmer project (hat appeared two issues ago (Volume 7, Issue 04, "Gizmos and Gadgets") 
has generated response beyond all expectation Unfortunately, most of the response resulted from some 
unforeseen difficulties that prevented many from completing a fully operational programmer 
This follow up provides corrections (mcluding a couple described last issue) and also 
gives test procedures, some enhancements to make the burner compatible 
With more EPROM types, and instructions for a 2764 adapter. 



A Few Notes 

For those of you who were brave (ambitious) enough to build the 
EPROM programmer that appeared in the Jan 86 issue of TRANSAC- 
TOR this article is for you. And for those that didn't build the 
programmer because it seemed too hard, I hope the following infor- 
mation will inspire you to try it. This article will attempt to clarify 
some unclear areas in the hrst article and will point out some errors 
that crept into the schematic (Murphy does live!) 

Corrections to the Schematic 

The schematic shown in figure 1 looks similar to the original but 
contains the necessary corrections. The circled areas indicate the 
corrections as well as some needed changes, 

1 . The 8255 to the left of the schematic shows two pins numbered 14. 
The CON pin should be pin 1, same as the other 8255. 

2. On the ZIF socket, pins 14 through 18 should be relabelled pins 15 
tol9.PinHisGND, 

3. On U3, the NAMD gates. Pin 1 4 goes to + 5V, pin 7 is GND. 

4. The emitter of Q 1 goes to GND. 

5. In lines 2760 and 2770 of the program, the " should be replaced by 
a ' " (i.e. null string). 

A wire was added from pin 13 of Ul to pin 4 of the personality socket. 
This signal becomes 0E4 that is {or low) for read, for standby, and 
I during programming. This is used for some versions of the 2716 
EPROM that did not work with the personality socket wiring supplied 
with the original article. To support this new signal requires the 
modification of three lines of the program. {Note: changing these lines 
won't affect the operation with other EPROMs.) 

1680 poke 1 6384, 239:fort = 1 to 1000: nexlt 
1770 poke1 6384. 21 
1780 pokel6384, 239 

An additional wire was added from pin 22 of U I to pin 3 of the 
personality socket. This adds Al 2 to the personality socket for use in 
reading masked ROMs of 8K or larger. 

Please note Ihe wiring corrections for the personality sockets. I am 
sorry if this caused any problems for those of you who built the 
programmer. This wiring has been re-checked and verified for proper 
operation. 

it was found that for some transistors used for Q I the 220 ohm resistor 
was too high in value and needed to be changed to 75 ohms. This 
value is not critical and can be anything close to 75. Make sure you 



wire the transistors correctlyl The relay shown must be a small DPDT 
The relay used in the prototype, purchased at Radio Shack, has a coil 
voltage of 5 volts and a coil resistance of 150 ohms. A DPDT switch 
can be used in place of the relay but subtracts from the automatic 
operation a bit. Besides that, if you forget to flip the switch, and leave 
programming voltage (25 volts, for example) on Vpp, accidental 
erasure could destroy your EPROM. (Ah, experience is a tough and 
expensive teacher!) 

The Circuit Board 

1 am sure many of you are wondering about the circuit board used. It is 
a Radio Shack catalog *276-166. It was cut in half and trimmed from 
the 25/50 J 00 inch fingers to 22/44 .100 inch fingers. The board is 
alas unavailable but still might be in the junk box at your local Radio 
Shack dealer. (Note: Jameco in CA sells a C64 cartridge port compati- 
ble perf board for about $8.00) The other alternative is to use the 
fingers from an old discarded cartridge. By trimming the foil back and 
carefully cutting the board the assembly can then be attached to larger 
perforated board such as a Radio Shack catalog *276-M7 or *276- 
191. Make sure that the cartridge used has all the needed fingers. 
Necessity is the mother of invention! 

Information Please 

Information about the pinouts of the expansion bus for the C64 was 
found in the 'Programmers Reference Guide' published by Commo- 
dore. Detailed information about the 8255's is found in Intel's 'Com- 
ponent Data Catalog' available from any Intel distributor. Check your 
local electronics supply houses for a copy too. 



Vpp 



Considering the vast number of types of EPROMs available, the 
original article left it up to you to determine the correct programming 
voltage (Vpp). Programming voltages can vary from 12,5 volts for 
certain 27256s to 25 volts for most garden variety EPROMs. Intel 
makes a version of the 2732 called the 2732A that programs at 21 
volts. Please verify the voltage that your EPROM requires from the 
data sheets supplied with your particular EPROM. Programming at a 
voltage higher than recommended WILL result in destroying the chip. 
Try using a slightly reduced voltage first (for example 22 voits for a 25 
volt EPROM ) and raise it up only if it doesn't work. Using the variable 
power supply shown in the original article will allow you to adjust for 
any programming voltage you may encounter 

Testing the Completed Programmer 

One time consuming but essential step in testing the circuit is to use 
an ohmmeter to check continuity. Unplug the chips and do not plug 



The Tronuicfor 



39 



May I987i \A)lume 7, Issue 06 



the programmer into the C64. Now, using the schematic, verify every 
connection. This finds 99.9% of all problems with the circuit. Verify 
also that pins (2,3) and (1,22,A,Z) of the board are not shorted 
together. Fingers 2,3 are the +5 volt supply and 1.22,A,Z are the 
ground. Verify also that no other fingers on the board are directly 
shorted to ground. With that complete the next test should be done, 

With the board plugged in and power turned on, the 64 should power 
up with the usual message on the screen. If this is not successful, re- 
check all connections and solder joints. Once you can get the board 
powered up, the battle is half over. Make the following checks with a 
voltmeter set to read 5 volts, 

POSITIVE + NEGATIVE- READING 



pin26Ul pin7Ul 

pin 26 U2 pin 7 U2 

pin 14 U3 pin7U3 

pin28ZlF pin 14ZIF 

pin 13Pskt pin I Pskt 



5.1 V 
5.1 V 
5.1 V 
5.1 V 
5.1 V 



[f any of the readings above are incorrect check the wiring of the 5 volt 
supply (pins 2,3 and 1 ,22,A,Z, on the fingers of the board). 

If you have gotten this far you are almost there! With a voltmeter set to 
read 5 volts connect the positive lead to pin 35 of Ul or U2, Connect 
the negative lead of the voltmeter to pin 7 of Ul or U2. You should 
read close to volts (less than .8 volts). If not, start over with the 
ohmmeter check; it is alsopossible that you have a defective 7400. If 
that test was successful, with the voltmeter still connected as above, 
depress the reset button and hold it. The voltmeter should read close 
to 5 volts (greater than 3.5 volts). If not, check the wiring of the reset 
circuit and the 1N914 diode. With this test done, you are ready to 
proceed to the software test. 

A short program appears at the end of the article that will assist in the 
testing of the completed programmer. This program will allow you to 
selectively turn on certain pins of the 8255s and check them with the 
voltmeter. Connect the negative lead of a voltmeter set for 5 volts to 
pin 7 of UL Then connect the positive lead to the pin indicated by the 
program. Referring to the schematic, there are four ports to test: port A 
of Ul, port Bof U^ port C of Ul, and port B of U2. The first menu of 
the program allows you to select the bit (or pin) to test. For example, if 
you wish to test port B of U2, select '4' from the main menu. The 
screen will then indicate that you are testing Port B of U2. To turn a bit 
[or pin) of the 8255 'on\ enter the desired bit number and press return. 
That bit only will be turned on. The 'on^ state is represented by a 
voltage greater than 3.5 volts. Selecting another bit turns the last bit 
off and the new one on. Entering '8' for a bit number returns you to 
the main menu. After testing all four ports of the 8255s you are ready 
to try your first EPROM. 

Using the Programmer 

Let's examine a few ways to use the programmer. Suppose you wish to 
make a modification to the Kernal rom in your C64, First, load your 
favorite monitor program into the C64 and enter the monitor. To 
modify the Kernal you must first relocate it. L^t's assume you transfer 
from $EOO0-$FFFF to $6000-$7FFF. Now, using your monitor, make 
the desired changes in memory at the new locations inside $6000- 
$7FFF. When you are done save the entire 8K block to disk as a 
program file. That's all that is needed to use it with the EPROM 
programmer. 

To make the EPROM, install the programmer Into the cartridge port 
and turn power on. Load the EPROM programmer program supplied 
in the January 87 issue of Transactor and place the disk with your new 



Kernal in the drive. With the program running, select menu item *2 
(PROGRAM EPROM). The program will ask you to select the size of 
EPROM you are going to program; enter '3' for an 8K EPROM. Next 
the program will ask for a file name, so type in the name of the new 
kernal that you just made. If the file is found the program will ask you 
to press a key when ready. Place a blank EPROM in the programmer 
socket (2764 in this case) and the proper personality plug for the 
EPROM used. Connect or turn on your source of Vpp programming 
voltage (25 volts for a standard 2764). Pressing any key will start the 
programming process. First you should notice the LED associated 
with the relay and the relay turning on. As the location number on the 
screen counts up you should notice a slight blink of the CE LED. The 
CE LED is on most of the time and is off for only a very short time. 
Programming will take a while (about ^0 minutes?). When the pro- 
gram is done the main menu will re-appear. Select the option to verify 
EPROM with disk and answer the questions as they appear. If all is 
well the program will return to the main menu. 

An 8K 2764 EPROM has 28 pins and the Kernal ROM socket has only 
24 pins. Figure 2 shows how to make an adapter from a 28 pin socket 
and a 24 pin DIP header. This will work for the Basic ROM also- 

Now let^s try just copying another EPROM. First Install the program- 
mer and load the program as described previously. Place the EPROM 
to be copied into the EPROM socket. Make sure that you have already 
installed the proper personality socket for the EPROM. Select the 
option to copy the EPROM to disk. Answer the questions asked by the 
program and give the file a name. What you are doing is creating a 
disk file to later burn into a blank EPROM. Reading an EPROM doesn't 
take as long as programming one. When the program is done copying 
the EPROM to disk, follow the same procedures as described previ- 
ously. 



." ^ 



For a third example, let's assume you have a machine language 
program you want to put on an EPROM. First, assemble the file in 
memory and save the file as a program as described in the first 
example. If you assemble directly to disk you will have to load the 
object file into memory and re-save it. This is required if your 
program file is not exactly the same size as your EPROM. If your file is, 
for example, only IK long and you are using a 2k EPROM, before 
loading your program file, fill a 2K block of memory with the value 
IFF (255 decimal). Then load your file to this block and re-save the 
entire 2K block. This will allow you to add to that EPROM later 
without erasing the whole EPROM. 

Figure 3 shows an additional personality socket for reading the C64 
Kernal and Basic ROMs directly. This allows you to create a file to be 
loaded, modified, and recopied to an EPROM. An interesting project 
might be to modify the character generator ROM in the C64 and create 
your own set of characters. 

The last example is for those of you that like to program on the rock 
(right in hex code). To program an EPROM for use in a different 
computer or as a character generator or logic array, use your favorite 
monitor and use the display or memory dump command. Fill an 
entire block the size of your EPROM with the value $FF (255 decimal) 
first. As you should know, an erased EPROM contains all $FFs as the 
stored value. When you are done entering the values for your EPROM 
in memory, save the entire block as a program file and follow the first 
example for programming the EPROM. 

The uses of the programmer (as in any tool) are limited only by your 
imagination. 

If you require a faster programming time, you can use a Basic 
compiler. Keep in mind that the programming pulse time for an 



ihsnontoctof 



40 



May1»a7:\totum»7,mu>Ot 



EPROM is at least 50 milliseconds and you must add the following line f 
to your program: *^'^^" 

1775FORCC = 1TO30:NEXTCC 



Figure 2: 2764 (28 pin) TO 2364 (24 pin) Adapter 



&;' 



2364 



2764 



!*> ^ 



*lt v^.s 



One last word of caution, do not erase an EPROM for longer than just 
required (about 15 minutes for most erasers), and use a good con- 
trolled voltage supply for Vpp, , . ; , j 

Ifyougetyour programmer working, drop me a line and let me know. 
Or if you have improvements, that's nice to know too. . », •.:; 



♦ iA 



--^ ^'H', 



Editor's Notet Since publishing his EPROM burner, Tim has been 
invited by several user groups to give presentations. . . and has 
accepted, if for no other reason than to cut down on phone time spent 
assisting callers who built the burner. Tim has invited anyone to call or 
write. Also, send an SASE and disk, and Tim will return it with the 
testing and burner programs. Write to: Tim Bolbach, 1575Crestwood, 
Toledo, Ohio, 43612 



f 



V,. 



:l) 



-■■■■N 



GM 
MG 
JG 
EO 
PL 
CN 
FO 
MP 
HN 
EP 
ND 
DE 
IH 
lA 
OE 
IF 

MN 
PM 
BO 
DP 
AA 
GL 
KN 
FG 
NG 
KA 
NO 
FM 
GE 
AH 
DE 
AP 
NC 
FD 
OF 
LG 
GL 



HH 
JE 
EM 

EF 
NM 
DN 
KL 
HO 



1 rGm *****##***^*************tt**t++++* 
20 rem **• EPROM programmer tester ***** 
30 rem*** bytimbolbach (1986) ***** 
40 rem ********************************* 






50n$(1)=" u1 porta" 
60n$(2)= " u1 portb' 
70n$(3)=" u1 portc" 
80 n$(4) = ' u2 port b 



'— -—'-X*^-^ 



■ -, --^ ~. -w 



it, 

A 



,f\ 



:ad(1) = 56832 

;ad{2) = 56833 

:ad(3) = 56834 

:ad{4)=r 57087 
90 for a = 1 to4;fort=t0to 7:read p(a,t4'1):nextt:nexta 
100 rem *** set all ports to write **• ^ " 

iiopoKe56835,i28 ..; ■ „:i:„.;. _i:i; :_:.: 

120poke57091,128 

130 rem *** menu select *** — ,^-;^ ^ ~^ 

140print"H^ 

JepROM programmer tester ":print 
menu " 



1 50 print 
1 60 print 
1 70 print 
1 80 print 
1 90 print 
200 print 
210 print 



[Xf 
Dl 

D2 

D3 

D5 
D6 
D7 

AO 

Al 

A2 

A3 

A4 

A5 

A6 

A7 

AS 

A9 

AlO 

All 

A12 

CS 
Vcc 



GND 



!1 



10 



12 



11 



13 



13 



15 



\A 



16 



IS 



17 



16 



18 



17 



19 



8 



10 



8 



3 



23 



25 



22 



24 



19 



21 



18 



23 



21 



20 



22 



24 



28 



27 



26 



12 



14 



20 



DO 
Dl 
02 
D3 
D4 
D5 
D6 
D7 

AO 

Al 

A2 

A3 

A4 

A5 

A6 

A7 

A8 

A9 

AlO 

All 

A12 

G 

Vpp 
Vcc 
PGM 

Vcc 

GND 

E 



^m imp II 






-s* 



1 -u1 porta 
2-u1 portb" 

3 - u1 porta' 

4 - u2 port b ' 
220 print:print:print" Prefer to schematic "diagram for" 
230 print^Jchip and port designations 
240poke198,0:waU198J:geta$ 
250a = asc(a$}-48:tfa>4ora<1 then 240 
260 print " 

270 print " Bset voitmeter for 5 volts 
280 print "Hconnect negative to pin #7 
290 print" Jconnect positive to pin show 
300 print: print 

31 printn$(a); " address is " ;ad(a) 
320 print: print: print 
330fDrt = 0to7 

340 print" pin # '■;p(a,t + 1);tab(20);'^bit";t 
350 next t 

360 printiprint" common is pin #7" 
370 print:print 

380 input " bit # to turn on {8 = menu) " ;b 
390 itb<0 or b>8 then 380 
400ifb = 8then130 
410 poke ad(a),2tb 
420 goto 260 

430 data A, Z, 2, 1,40,39,38,37 
440 data 18, 19,20,21,22,23,24,25 
450 data14, 15,16, 17, 13, 12,11, 10 
460 data 18, 19,20,21,22,23,24,25 



Use a 28 pin WW socket and a 24 pin ribbon cable tieader (male). On 
the 28 pin DIP, cut down pins 1 , 2, 20, 23, 26, 27 and 28 to about 3/8 " 
. Using wire wrap, short pins 1, 26, 27 and 28. Connect pin 27 to pin 
24 of the cable header, pin 23 to pin 18, pin 20 to pin 12, and pin 2 to 
pin 2 1 . The long pins will plug directly into the cable header such that 
pin3of the 28 pin WW goes to pin 1 of the 24 pin header (pin 4 to pin 
2,5to3,etc, 25to23, 26to24), 




DwTltintoctor 



41 



May 19S7: \A)hmw 7, Imw 06 



ri;- 




to 

10 
JO 

+o 

ro 

TO 



bCH 



fU- 



<rt 



no- 




\ 



Olf 

* — ois 






er3Z 



Or* 




;?7^f,,^7/2^ 




JO 

ro 



7z^ri 




iOO 



tio- 



tfo- 



-013 



-0J> 



■o'a 



014 



i 



/^m ^334 /»^J^ ^^o^s 



^^ £3C4 /^/tSf( ^/fOrtS 
















Figure 1: EPROM Programmer Schematic with corrections and changes 



th# TraMGcfof 



42 



MQyWg7:^te>Mme7,toua06 



Help! Help! 

by Nick Sullivan and Chris Zamara 



Instant Help from an unexpected place! 



Heff is a utility that wilt fmwkk you with instant, oib4ine help, 
fnini juxt about any appiKuinm you may be running. Vie 
(wos^mm can etiminate the tteed for a pite of manuak by your 
side, and can speed up the teaming pmeea when it comes to 
using a cotnpiicoted new f»ece oi software. OetOirtg such a 
urffit\' - orw that can work atrmsiside other pm^rams - can be a 
most tonuous endeavour Come j4 mi U5 in our adi^nture as we 
try to build a transparent background tasit on the Commodnre 
64! 

The" quesrton is: bow do you %«rrite totally trmifkimil codtf 

Wenimnted to wrife a program thai; at ihe touch of a key. wmifd 
bring up a menu of help Topics. The touch ol another ke> would 
choose a topic, and a corresponding sequential (lie would be 
brout^ht in from disk and printed lo the •cnm. At the touch of 
yer anoiher key. the originil environment would be retiorcd. 
and whatever was going on beforehand would continue as if 
nothing held happened. 

These oprmtions require a fair amounl of code* We have to: 

1) trap the first special keypress 

2) save the user's low RAM and soeen in some secret place, to 
be restored later on 

3) print the fite menu 
4} wait for a selection 

5) open a file or exil the help utility and restore the original 
OKI text 

6) print the file, pausing after each screenful until the u»r 
wants to continue 

7) close the file and go back totiep 2 

At the tame time, we want this code to be undiyurbed by most 
programs and to consume a minimum amount d precious 
RAM How? 

The answer is: you don't. 

If your help program is on a cartridge, yoo east make it almo^ 
completely transparent to other applicatfons But cartridges are 
too expense and difficult to majiutauure for everyday pur- 



Ifymirhdp prugroin is runnmg under a mulmasking operating 
system like the Amiga's, transparency is again not hard to 
achieve. But we re talking about the Commodore 64 here and, 
the last time we looked, multitasking wasn't 



So we do what program mr r s have aKinqft done on the 64: look 
tur some space for our program where the traffic is especially 
light, and hope that nobody dumps on it. It used to be that short 
utilities would normally be placed in the cassette buflt;r This 
was an inheritance from the PET days, when there were few 
other places for machine langu^ programs to go. But our 
program is not that short and. in any case, Ihe the cassette 
buffer Is busier now. 

The naci choice was the 4K of RAM at SCOOO. which was either 
a design quirk or an intelligent dedsion on the t>art of Commo- 
dore, depending on huw you look at it. Naturally, It soon 
became impossible lo depend on an>lhing surviving in the C- 
block for any length of time. 

Next came the top of BASIC, also popular in I^ET day*. This had 
some advantages. BASIC memory in the 64 is fairly large, so 
you txi take away some wtlhoul infliding a great penalty on 
the user It is also less used tlian the C-block, so your (MOgram 
has a correspondingly greater ctiance of surviving (as long at 
you protect it from BASIC itstlf by adjuMing a couple of 
pointers). But it also has* drawt>acks. For one thing, you never 
know in advance just wliere the top of BASIC is. so you havr to 
make your code relocatable. For another, this area of memory 
gets more use now than i\ did once upon a time (POWER, PAL 
and Supermon all use it, for irLStance) so the risk tA inconven- 
iencing BASIC by using up too much RAM has grown over the 
years. 



That leaves us with the hidden* RAM underiytng the ROMs. In 
the party days, this RAM was a godsend -- nobody used it for 
anything. If you could get your code in there, and get ai with 
some wedging scheme or other, you were home free. No 
longer. Prc^rammcrsdiiCOV«red that the video chip can look at 
that RAM without problems, and started using the RAM at 
SAOOO and SEOOO lor high resolution screens, character sets 
and sprite data. They also found tf^ machine language can be 
run quite nicely out at SAOOO fjust kick oof BASIC for a little 
while) and e\en at SKOUt) if you don t need the Ktrnal lot 1/0 
(and you can still load into that RAM without special precau- 
tions), 

Uke some peaceful tribe driven Into tncieasingty inhospitable 
territory by hostik nnghtwurb, utility writers were mevitably 
forced into these unfriendlier regions of memory in order to 
have any hope that their code would sur\'ive ttir t ompetition 
for RAM. One by one, these newty-mastered areas fust as 
InevitabK' became overcrowded in their turn* 



c 



^pvi 



«ZI 



The only place that was generally ignored was the one we 
havenH yet mentioned: the D-block of RAM that underlies not 
just ROM (m this case the character set ROM) but alio the 
inpul/output regi^era lof the VIC II. SID and CIA chips. You 
can't toad into this arcs - it writes over your I/O registers, 
which is a pretty sure-hre means ol crashing the syitem. You 
can't save From It. twoitie the RAM and the I/O chips needed 
to communicate with the disk drive are not simultaneously 
accesfjble. What's worse, any code executing in the D-RAM 
cannot directly access any I/O (the video chip, SID chip, serial 
port, etc.), becnise when the D-RAM is selected, all of the I/O 
Is switched out If there is a use for this RAM, it's ceitainly not 
obviousaifint glance. 

Where, then, do we put our help utility? Reluctantly, we put it 
in the D-bloclL 

Having made this fundamental, and possibly misguided design 
decision, let's follow the programming steps through in more 
detail. First, it's obvious that %ve cant put everything under 
ROM - If we did, we couldn't reach our code to oncute it in the 
first place. So we need a bit of link code that will switch out the 
overlying stuff in the Deblock (tiy poking a 134 into the 
memory configuration rrgiitrr at location I) then jump to the 
real program. Oh yes» we also need another link to bring the 
ROMs back in (with a S37 in location I ) so we can continue life 
normal after the code has finished extculing. 



This brings back the same old question - where can we put our 
code (the link code this time) so that it will get in the way of the 
kmm other prc^rams? Well, we're only talking about two very 
short routines now. so the top of BASIC space seems like a 
natural: the user is no( likely to nolJce the diBifMia . and laoil 
programs that inhabit this area are relocating, as mentioned 
above, so we probably won't get written over. Sometimes, 
tliough. tlve lop of BASIC uxmt be safe, so we'll include an 
option to put the link code somewhere else In memory If the 
merdeilrei. 

To recap: the main program will go in the D-block. where It 
should be safe trom most competition. The short routines will 
go either at the top of BASIC, where consldefale programs like 
POWER and others will leave them alone, or at some other 
place to be determined by the user. 

Now back to the seven steps described above 

1) To trap the fri^t keypren, weil use the vector at $028F. This 
vector (known as KEYLOG in the memory maps), b the 
stepping stone to the ROM routine that converts raw key- 
codes to r«al PETSCII characters, and is invoked during 
every IRQ Interrupt )uit after the keyboard has been 
scanned. It is not ven- well-known, so not many programs 
bother to ensure th^ it is set to its detauh value as part of 
their initialization tequences. which is less true of the more 
papular v«clon in page 3 (it is rent by RUN/STUP- 
RESTORE. however) We'll subalilule for this vector the 
addrev of our own routine m *open' RAM. whose function 
will be simply to switch out the ROMs (a// the ROMs - we'll 



have a pure RAM computer with no I/O regl^ers at this 
point) and call our main pn^gram in the D^blotlL 

2) Before it does anything else, that program has to save the 
uwr*s current environment so thai it can be restored later 
on. We'll want to save all parti of memory that the help 
utUky toeH will wbaequently affect These include: zero 
pafe. the ttack (page I ), a few bytes in page 2 (646 through 
648). the low^res screen area well be using (pag» 4 through 
7X colour RAM (pages $D8 through $DB). and the video 
rcgbtersfrom SDOl 1 through SD02L We 11 store all this data 
in the nlot place we know about - nght alongside our 
propam itself in D-block RAM 

Unfortunately, this presents a new problem To write stuff 
into D-block we need to have the I/O registers switched out. 
But to save the cokNir RAM and the video MgMenwv naad 
the I/O switched in. The aiiswer? More lirjk code. To mini- 
mize our demands c^ the user's RAM, well copy that code 
into one end of page I (the stack page) ever>' time the help 
utility is invoked, arKl execute it there. At the same lime« 
we'll move the stack pointer to the other end of theatack so 
there'll be no conflict. (The Stack will be restored to Its 
original state after the help utility has Tintshed executing.) 
But now that weVe broken this new ground, we may as well 
use it for more than fusi copying I/O registers to RAM. We'll 
alio put hen our loutifio for copying the RAM back to the 
registers (which we'll need when we're ready to exit), and 
our disk I/O routines (for opening, getting t>ytes from, and 
dosing the disk files, for keyboard input and for screen 
ou^t). 

3] Now we have tofHint the file menu. No problem. We already 
have the data in the D-block. so we just make repeated calls 
to our print character routine in page 1 till the printing is 
done. 

4) Now we wait for the user's sel ec ti on, ^ain the routine we 
need is going to be on the stack pagie. Rather than do a JSR 
COIN here, we preferred todoa JSR SCNKEY and interpret 
Ibe kcycoda ourielves. This avoids complications with 
interrupts, and also lets us look at the logo key (our escape 
key) and ttie main keyboard sqtarateiy. 

5) To open the file we call another of our routines on the stack 
page. By (his point in the proiect. we've seftied on standard 
fitraaraes o( the form *he[p-a', 'hetp-b\ and so on. which 
means that we only have to p^s the distinguishing ftnal 
character of the name to our open routine. 

6) We fetch and prtru the file byte b^' byte, wailing for a signal to 
either continue or abort after each screenful. Afocig with our 
routines for printing to the screen and scanning the key* 
board, we need a new one to get bytes from disk: this will go 
on page t with the others. 

7) Finally we have to close the file (also via a routine In page I) 
and go back to ^ep 2, 



c 



Ok^r. all thto tiuff hai been worked out. and the code has been 
written. Now aO we need to do is find some way to anemble it 
alt. not forgetting that we're going to need some BASIC at the 
front of it so that the menu selection strings can be changed to 
fit the actual help files available. We want to use PAL (the 
Transactor's default assemblei^. but PAL doesn't have a good 
way of handling this scattered code in one assembly. The TSDS 
assembler (Total Software Development System b>* Kevin Pick* 
dl). on the other hand, has the '•$ »' pmido-op, which is 
4>edfically designed to allow you to assemble discontiguous 
blocks of code in one piece. TSDS also lets you bring in binary 
data (our BASIC front end, in this case) from disk, as though it 
had been coded with ,BYTE statements. After a bit of fooling 
around, the thing is done. 

For pubtkaflon. though, the program r«illy should be in PAL - 
after all that s the assembler most of our readers are using. PAL 
has the BAS pseudo-op, which lets you incorporate BASIC 
code directly into your program, using SYS <label> to invoke 
the machine code. But it doesn't let you assemble those 
discontiguous blocks in one piece. The aiuwer this time is to 
assemble in two pieces, appending the secocid piece of ot^ectlo 
the first in an anembly to disk. A couple of chunks of the 
program need to be accused both before they're copied into 
D-block RAM and after (the VECSET routine, the help utility 
video preference and some other data) which means some 
fancy footwork with labels, but it turns out to be possible. 

To create the HELP program, you can either assemble the 
source code in listing I or type in the BASIC data loader in 
listing 2, Ef you choose to iMmibie the source, you'll have to 
use PAL 64 or else face a very tricky porting job. Otherwise, 
type in listing 2 and run it. Either way. thb will create the file 
called ' help ' on disk, which is the final ptogram, and all you'll 
need except for the sequential text files themselves. 

Run the HELP program, and the help is thereafter available at 
any time (at least until the next RUN^-STOP/ RESTORE). To get 
the help, press CTRL-<left-arrow>. Your current screen will 
be r^laced by a screen containing the menu choices* which 
you select by letter (Exception: if you have more than one file 
open, the help utility will refuse to work, and will lust do a brief 
series of screen flashes instead.) Each imnu selection corres* 
ponds to a disk file, which will then be primed as described 
earlier (if the file is not on your current disk, you'll get a garbage 
character and a space bar prompt - we didn't have room for 
fanc}' error checking). After you've finished looking at help 
files. youUl be returned to wherever it was you came from, 
which might be direct mode or might be a running program. 
Your screen colours and so on will be the way they were before. 
If you want to disable the help for any reason, preu SHIFT- 
CTRL-<left arrow >; you'll get a long series of screen fiashes* 
and the special keypress will no longer work. You'll have lost 
exactly 17 bytes of open RAM in the process. To re-enable the 
help, you'll have to load and run the original program file all 
over again. 

To install your sequential help files, first rename them as * 
help-a' . 'help-b* and so on. Then k>ad the help program. 



and write your menu selections into the strings in the DATA 
statements between lines 50 and 69 (you can have up to 20 
!^ections. hence 20 different help files). Mate sure that you do 
not alter the length of the strings or« for that matter, any line in 
the program, after assembly - this is very important. When the 
prc^am encounters a DATA statement beginning with a Mank. 
it assumes thiU there are no more menu selections to come 
When youVe entoed all of these strings Into the D/SA state- 
ments, enter RUN 100 to install them, and reiave the proenm 
(before doing a regular RUN) to make your changes permanent* 
When the program is subsequently RUN. the new selections 
will be displayed in the menu. Beikhi changing the names of 
menu items in the help utility, you can control the bonlv« 
biChgRHJnd and character colours by changing the POKEs in 
Hum 230 through 250, 

If you want to set the location of the 1 7 bytes of link code that go 
In normal RAM, dungethe 5-dlgit addreits in tine 10 (assigned 
there to the variable A), If this addn zero, the help utility 
puts the link code at the top of BASIC. If it is non-zero, the link 
code go^ to the specified address. If you do change this 
number^ just make sure you don't change the length of the line 
Oe. the number must always be 5 dl^ long). 

Note for PAL users: After you assemble, the statement SYS* 
]Nrr\A in line 1 1 will have been changed to SYS3298;.A (the 
actual number may viiy depending on just how you type the 
BASIC portion in). The colon after the number Is an error, of 
course: it results hx)m an oversight in PAL Change the colon to 
a space {don 1 just delete it!) before you save the program. 

One more thing before we dose. There's undoubtedly more 
you can do with the D-block RAM than )uit print sequential 
files. It can sometimes be really useful to be able to do 
something while in the midst of another program, in order to 
change the programi behaviour in some way. (The HELP 
utility evm works from many commerdal programs.) A simple 
example Is changing screen colours; a more difficult thing 
would be adding features to a program. All that's required lo 
adapt this program for your own purposes b to modify the 
central part of the help routine, arid replace the file printing 
routines, the string storage and the stack-page subroutines 
with code of your own devising The other piits of the program 
should not need to be changed. Please let us know if you come 
up with anything InterKting that you want to share with other 
Transactor readers. 



Help! BASIC 



1 renr daia generator for * helpl ' • 

20 rem* crMtos file on drive • 

aOcs-O 

40 for I -2049 to 47l8:read a 

50c5*cs^a:nMti 

60 If C802251 25 then print * fdata errort * : Bn6 

70 restore 

80open1.8.15/0':open2.8.1/0:h«lp!' 

90 inputil .e.o$.ts:if e then print* fdisk errorf * : go/to 150 

100 print#2.chr$(1);chr$(8). 

1l0^i-2049to47iSr6ada 



^ 



'■'»»o* I 





FM 


120 pont#2.chr$(a), next! 








DC 


1 580 data 


32, 32. 


32. 32. 


32. 32. 


32. 32 




CE 


IX Ion- 110 537 








DE 


1 590 data 


32, 32, 


32, 32, 


32. 34. 


0. 2 




6K 


140 prtni«2.chr$(0);: naxt i 








6E 


1600 data 


10. 55, 


0,131, 


32, 34, 


32. 32 




OF 


1 50 dOM2:dOMl 








EA 


1610 data 212, 72. 


69. 32. 


70. 73. 


82. 63 




AK 


160 end 












a 


1620 data 


84. 32. 


70. 79. 


85. 82, 


32. 68 




oe 


170: 












AJ 


1630 data 


65, 84, 


65. 32, 


32. 32, 


32, 34 




CO 


1000 data 


35. 


8. 15, 0.143. 


32, 


84. 


72 


AE 


1640 data 


0, 36, 


10, 56, 


0.131. 


32. 34 




LH 


lOIOdata 


69. 


32, 64, 82, 65, 


78, 


83, 


65 


KO 


1650 data 


76, 73, 


78, 68, 


83. 32. 


65, 66 




OH 


1020 data 


67. 


84. 79. 82. 32. 


72, 


69, 


7S 


NP 


1660 dala 


79, 86, 


69. 32, 


65, 82. 


69. 32 




AH 


1030 data 


80. 


32. 65, 84. 73. 


76. 


73. 


84 


GP 


1 670 data 


65, 32. 


83. 65 


77. 80. 


76. 69 




PO 


1040 data 


89, 


0. 72, 8. 16. 


0, 


143. 


32 


CO 


1680 data 


32, 34. 


0. 70 


10, 57. 


0.131 




HJ 


1050 data 


78. 


73. 67, 75. 32, 


83. 


85. 


76 


AS 


1690 data 


32. 34. 


77. 69, 


78, 85. 


32. 84 




MK 


1060 data 


76. 


73. 86. 85. 78. 


32. 


65. 


78 


B 


1700 data 


72, 65, 


84. 32, 


87. 73. 


76. 76 




PI 


1070 data 


68. 


32. 67. 72. 82, 


73. 


83, 


32 


JB 


I7i0dala 


32. 66. 


es. 32 


83, 72. 


79. 87 




MG 


1060 data 


90. 


65. 77. 65, 82, 


65. 


0, 


91 


MM 


1720 data 


78, 32. 


32. 34, 


0.104. 


10. 58 




NF 


1090 data 


8. 


17, 0.143. 32. 


79. 


67. 


84 


JP 


1730 data 


0.131, 


32. 34 


87. 72. 


69. 78 




MN 


1100 data 


79. 


66, 69. 82. 32, 


49. 


57. 


56 


N8 


1740 data 


32. 72, 


69. 76 


80. 32. 


73. 83 




EF 


inodata 


54. 


0.121, 8. 18. 


0, 


143. 


32 


HQ 


1750 data 


32. 73. 


78, 86 


79. 75. 


69. 68 




HL 


1120 data 


40. 


67. 41. 32. 49. 


57. 


56. 


54 


BA 


1760 data 


46. 32. 


32, 32 


32. 34. 


0.136 




HL 


1130 data 


32. 


84, 72. 69, 32, 


84. 


82. 


65 


MP 


1 770 data 


10. 59. 


0.131 


. 32. 34. 


32. 32 




ML 


1140 (Ma 


78. 


83, 65, 87. 84. 


79. 


82. 





U 


1760 data 213. 80. 


32. 84 


79. 32. 


50, 48 


BM 


1150 data 153, 


8. 19. 0. 143. 


32. 


79. 


75 


FH 


1790 data 


32. 77. 


68. 78 


85. 32. 


73, 84 




AC 


1160 data 


65. 


89. 32. 84. 79, 


32. 


67. 


79 


BJ 


1800 data 


69. 77. 


63. 32 


77. 65. 


69, 34 




JA 


1170 data 


80. 


69, 44. 32. 78, 


79. 


84. 


32 


HO 


1810 dala 


0. 172. 


10. 60 


. 0. 131. 


32. 34 




OO 


1180 data 


84. 


79. 32. B3. 69, 


78. 


76. 





OK 


1620 data 


66. 69, 


32. K 


83. 60. 


68, 46 




FP 


1 190 data i5d, 


8, 20. 0. 58, 


0. 


196. 


8 


CC 


m'Vldaia 


32. 198. 


79. 82 


32. 69. 


65, 67 




OP 


1 200 data 


21. 


0.143, 32, 68. 


79. 


32. 


78 


OJ 


1640 data 


72. 32. 


79. 78 


, 69. 44. 


32, 32 




EF 


i2iOdMa 


79. 


84. 32. 65. 76. 


84. 


69. 


82 


BD 


1 850 data 


32. 34. 


0.206 


, 10. 61. 


0, 131 




C 


1220 dala 


32. 


64. 72. 69, 32. 


76. 


69. 


78 


FK 


1860 data 


32. 34, 


84. 72 


, 69. 82. 


69, 32 




FC 


1230 data 


71. 


84, 72. 32, 79. 


70. 


32. 


65 


DM 


1670 data 


77. 86, 


83, 84 


. 32. 66. 


69. 32 




IP 


1240 data 


78. 


69, 0, 234. 6. 


22. 


0. 


143 


NM 


1680 data 


65. 32. 


77. 65 


. 84. 67. 


72. 73 




AF 


1 250 data 


32, 


76. 73. 78. m. 


32. 


65. 


70 


GH 


1890 data 


78, 71. 


32, 34 


0. 240, 


10, 62 




HF 


1260 data 


84, 


69. 82. 32, 80. 


82. 


79, 


71 


PH 


1900 data 


0,131, 


32. 34 


, 70. 73. 


76. 69 




AF 


1270 data 


62. 


65. 77. 32. 73. 


83, 


32. 


65 


LO 


1910 data 


32. 79, 


78, 32 


, 68. 73. 


83, 75 




U 


1280 data 


93. 


83. 69. 77. 66. 


76. 


69. 


68 


LN 


1920 dala 


44. 32. 


87, 73 


. 84, 72, 


32, 65 




QG 


1290 data 


0,240. 8, 23. 0. 


58. 


0. 


22 


EH 


1930 data 


32. 32, 


32, 32 


, 32, 34. 


0. 18 




FD 


1300 data 


9, 


24. 0. 65.178. 


48. 


48, 


48 


LK 


1940 data 


11, 63. 


0,131 


, 32, 34, 


70. 73 




AN 


13lOdata 


48. 


46. 58. 32. 143. 


32. 


53, 


32 


IE 


1 950 data 


76. 69. 


78. 65 


77, 69, 


32. 79 




NJ 


1320 data 


68. 


73. 71. 73. 84. 


32. 


76, 


73 


DA 


1 960 data 


70. 32, 


84. 72 


69, 32, 


70. 79 




MK 


1330 data 


78, 


75. 32. 66. 65. 


83. 


69. 


32 


KO 


1 970 data 


82, 77. 


58. 32 


, 32. 32, 


32. 34 




QL 


1340 data 


65. 


68. 68. 62. 0. 


38. 


9. 


25 


Kl 


I960 data 


0. 52, 


11. 64 


, 0,131, 


32, 34 




CQ 


1350 data 


0. 


158. 32, 51. 53. 


53. 


52. 


44 


IM 


1990 data 


32 32, 


32. 32 


. 32. 32. 


32, 32 




JQ 


1360 data 


65. 


58. 32, 156, 0, 


48. 


9. 


26 


GB 


2000 data 


32. 72. 


69. 76 


, 80. 45. 


63. 32 




OE 


1370 data 


0. 


137. 32, 51, 52. 


48, 


0. 


54 


MN 


2010 data 


32, 32, 


32. 32 


, 32. 32. 


32. 32 




NM 


1380 data 


9. 


27, 0. 56, 0. 


88. 


9, 


SO 


BN 


2020 dala 


32. 34. 


0. 86 


. 11, 65, 


0.131 




MB 


1390 data 


0. 


131. 32. 34.199. 


69. 


64. 


84 


FF 


2030 data 


32, 34. 


87. 72 


. 69. 82. 


69. 32 




CO 


1400 data 


73. 


78. 71. 32.211. 


64, 


65. 


82 


NF 


2040 data 


84. 72. 


69. 32 


, 39, 63. 


39. 32 




FM 


1410 data 


84. 


69, 68, 32, 32, 


32, 


32. 


32 


MJ 


2050 data 


82. 69, 


80, 62 


, 69. 83. 


69. 78 




AJ 


1420 data 


32. 


32. 32, 32, 32, 


34, 


0. 


122 


MB 


2060 data 


84. 83. 


32. 34 


, 0. 120. 


11. 66 




CL 


1430 data 


9. 


51, 0,131. 32, 


34, 


208. 


82 


JD 


2070 data 


0,131. 


32. 34 


, 65, 76, 


32. 65 




IH 


1440 data 


73. 


78, 84. 73. 78. 


71, 


32, 


217 


DK 


2080 data 


76, 80. 


72. 65 


o6, 09» 


84, 73 




U 


1450 data 


79. 


85. 82, 32.212, 


69. 


88. 


84 


PJ 


2090 data 


67, 32, 


67. 72 


, 65, 82. 


65, 67 




IL 


1460 data 


32. 


32, 32. 32. 32, 


32, 


32. 


34 


R 


2100 data 


84, 69. 


82, 46 


, 32. 34. 


0.154 




FJ 


1470 data 


0. 


156, 9. 52. 0. 


131, 


32. 


34 


AF 


21 10 data 


11. 67. 


0.131 


, 32, 34. 


32. 32 




HN 


1480 data 193. 


66. 79, 89. 68, 


73, 


78. 


71 


FC 


2120 data 21 2. 72. 


69. 32 


. 65, 66, 


79, 86 




JJ 


1 490 data 


32,211. 80. 69. 76, 


76, 


73. 


78 


CO 


2130 data 


69. 32. 


77. 69 


, 78, 85. 


32. 73 




OK 


1500 data 


71. 


32.197, 82. 82. 


79, 


82. 


83 


FL 


2140 data 


84, 69. 


77, 83 


, 32. 32. 


32, 34 




HN 


1510 data 


32. 


34, 0, 190. 9. 


53, 


0. 


131 


JF 


21 50 data 


0.188. 


11. 68 


. 0,131, 


32. 34 




NM 


1520 dala 


32, 


34.199. 69. 84. 


84 


73. 


78 


BO 


2160 data 


02, 69, 


81, 86 


. 73, 82. 


69. 32 




KL 


1530 data 


71. 


32.198. 73. 78. 


73 


83, 


72 


OP 


21 70 data 


70. 73. 


76. 69 


, 78. 65, 


77. 69 




DE 


1 540 data 


69. 


68. 32. 32. 32, 


32 


32. 


32 


GO 


2180 data 


83, 32. 


72. es 


, 76. 80. 


45, 65 




CO 


1550 data 


32. 


32, 32, 34, 0,224 


9, 


54 


FK 


2190 data 


32, 34, 


0.222 


11. 69, 


0,131 


_ 


NP 

._ESL 


1560 data 
1S7flffatll 


0. 


131. 32, 34. 32. 
32. 32. 32. 32 


32 

32 


32. 


32 
32 


PP 


2200 data 


32, 34, 
72. 32. 


84. 72 
72 69 


, 82. 79. 
. 76. 80. 


85, 71 
45. 68 


1 llwM 


MMM» 










« 


i 








MWINKW 





BM 


2220 dMt 46, 32. 3St, 


32. 


32. 


32. 32. 32 


KE 


aeOdata 41, 58.142. 0,219, 13, 84, 1 


JL 


2230 data 32. 32. 32, 


34. 


0,228. 11. 70 


HD 


2870data128, 0. 0. 0. 4. 9. 9. 


OK 


2240 dato 0. 58. 0. 


10. 


12. 


100. 0. 83 


KF 


2880 data 96, 32.253.174. 32,138,173. 32 


MO 


2250 data 76.178, 50. 


53, 


170, 


49. 58. 32 


IH 


2890 data 247. 183. 1 74. 144. 2, 228. 224. 144 


CH 


2260 data 143. 32. 50. 


53. 


32. 


67. 72. 65 


OP 


2900 data 239, 1 42. 1 35. 1 4. 1 74. 1 43, 2, 1 42 


CF 1 2270 data 82. 83. 32, 


80, 


69. 


82. 32. 77 


FJ 


2910 data 134. 14,170.208. 14. 56.165. 55 


KH 


2280 dlOa 69. 78. 85. 


32. 


73. 


84. 69. 77 


JA 


2920 data 233. 17.133. 55.168.165. 56.233 


DO 


2290 data 0. 40. \2, 


110, 


0. 


83.178.194 


BH 


2930data 0.133. 56.140.188. 14.141,189 


El 


2300dda 40, 52. S3. 


41, 


170. 


SO. 53. 54 


PG 


2940data 14.132. 34,133. 35.170.152, 24 


BB 


2310 data 172. 194. 40. 


52. 


54. 


41.171. 50 


at 


2950data105. 11,141.164. 14,144, 1.232 


BM 


2320 data 48. 1 72. 83. 


76.171. 


49, 0. 49 


NC 


2960data142. 185. 14,160. 16.185.119. 14 


ED 


' 2330 data 1 2, 1 20. 0. 


135. 


32. 


65. 36, 


JN 


2970data145. 34.136. 16.248.160. 2,185 


LC 


1 2340 data 75. 12. 130. 


0. 


139, 


32.200. 40 


OE 


2980data222. 13.153.176. 14.136. 16.247 


DM 


2350 data 65. 36. 44. 


49. 


41, 


178. 199. 40 


LN 


2990 data 1 73, 221 , 13.141.183. 14.120.169 


AL 


2360 data 51. 50. 41. 


32. 


137, 


32. 50. 48 


BM 


3000dala 52,133, 1.169.136.160, 14.133 


Bl 


2370 cMa 48. 0. 92, 


12. 


140. 


0,129. 32 


AP 


3010 data 34. 132, 35. 169. 0. 160, 218. 133 


MM 


2380 data 73, 1 78. 49, 


32. 


164. 


32. 83. 76 


JA 


3020 data 36.132. 37,160. 0.162. 6.177 


OG 


2390 data 171. 49. 0,113. 


12. 


150. 0. 151 


NE 


3030 data 34. 145. 36. 200. 208, 249, 230. 35 


DF 


2400 data 32. 83.170. 


73, 


44. 


196. 40.202 


LH 


3040data230. 37.202.206,242. 32,136. 14 


EF 


2410 data 40. S&. 36. 


44, 


73. 


41. 41, 


PD 


3O50dataie9. 55,133. 1, 88,166. 55,208 


HO 


2420 data 121. 12.160. 


0. 


130, 


32. 73. 


NB 


3060 data 2. 198 56. 196. 55. 96. 120. 165 


IG 


2430 data 133. 12.170. 


0.151, 


32, 83. 170 


CB 


3070data 1. 72.169. 52.133. 1. 76. 56 


AL 


2440 data 73. 44. 48. 


0.165. 


12, 180. 


CG 


3080dala218. 104. 133, 1. 76.255.255.173 


FC 


2450 data 78.178, 78. 


170. 


49. 


58. 32. 83 


00 


3090data143. 2.172.144. 2.141, 50,218 


EO 


2460 data 178. 83.170. 


83. 


76. 


58, 32. 139 


KL 


3100data140. 51.218.173, 52.218.172. 53 


OP 


2470 data 32, 78.179. 


50. 


48. 


32.137. 32 


8A 


31 10 data 218, 141.143. 2,140.144, 2, 96 


CN 


2480 data 49. 50. 48, 


0. 


171, 


12, 190. 


HG 


3120 data 27, 10.170,101. 0.200. 0. 23 


BO 


2490 data 58, 0.193, 


12.200. 


0, 65. 178 


HC 


3130 data 121. 240, 0. 0. 0. 0. 0.249 


LF 


2500 data 49, 50. 50. 


58, 


32. 


141. 32. 51 


JC 


3140 data 249. 0, 0. 0. 0. 0. 0. 


HO 


2510 data 51, 48, 58. 


32. 


90.178, 65, 


KJ 


3150 data 0. 0. 0. 0, 0, 56.218.165 


AC 


2520 data 224, 12,210. 


0. 


65. 


178. 49. 50 


FH 


3160 data 203. 201. 57.240. 3.106. 48,218 


IG 


2530 data 51. 58. 32. 


141, 


32. 


51. 51, 48 


IH 


3170data174. 141. 2.224. 4,144.246.224 


GE 


2540 data 58. 32. 90. 


178. 


90. 


170. 50. 53 


DN 


3180data 6.176,242.169.64.133.203.173 


PB 


2550 data 54.172, 65, 


170. 


49. 


49. 0. 230 


PJ 


3l90data 50.218.172. 51.218, 32. 18.218 


CF 


2560 data 12.220. 0. 


58. 


0,243. 12.230 


BM 


3200 data 224. 4. 240. 4. 162. 48, 206. 34 


PJ 


2570 dan 0,151. 32, 


90. 


170. 


48. 44, 32 


BL 


3210 data 162. 16.165.152.240. 22.201. 1 


00 


2580 data 78. 0. 10, 


13. 240. 


0.151, 32 


IM 


3220data208. 21.173. 89. 2. 32.148.218 


JO 


2590 data 90. 1 70. 49. 


44, 


48. 


57. 32. 58 


NA 


3230 data 1 4 1 . 229. 221 . 1 73. 1 09. 2. 32, 148 


PA 


2600 data 143, 32, 66. 


79, 


82. 


68. 69, 82 


ME 


3240 data 21 8. 141,230,221. 76. 88.219. 32 


LC 


2610 data 0. 37, 13.250, 


0, 


151. 32. 90 


IP 


3250data 0,218.160.22,185.155.218.153 


El 


2620 data 170. 50, 44. 


48. 


57. 


32. 58.143 


KO 


3260data 64, 1.136. 16,247. 32. 64, 1 


NK 


2630 data 32. 66. 65. 


67, 


75. 


71. 82. 79 


OB 


3270 data 76, 62.218. 41.126, 9. 4. 73 


PP 


2640 data 85. 76. 68, 


0. 


60, 


13, 4, 1 


OE 


3280 data 2. 96,169. 55.133. 1.236. 18 


NJ 


2650data151, 32. 90.170, 


51, 


44. 48. 48 


GC 


3290 data 208, 208, 251. 238. 32.208.238. 33 


JB 


2660 data 32. 58. 143. 


32, 


67. 


85. 82. 83 


KG 


3300 data 208. 202. 206, 242. 169. 52. 133. 1 


El 


2670 data 79. 82. 0, 


81. 


13, 


14. 1,153 


AF 


3310 data 96.162. 55.134. 1,173.255,255 


JO 


2680 data 32. 34. 68. 


79, 


78. 


69. 33. 34 


CI 


3320 data 162. 52,134, 1.141.255,255,238 


GM 


2690daia 58. 32,137. 


32, 


51. 


52. 48. 


Afi 


3330data 5. 1,208. 3.238. 6. 1.238 


Kl 


2700 data 87. 13. 24, 


1. 


58. 


0.123. 13 


DC 


3340 data 12. 1,208. 3.238, 13. 1. 96 


GO 


2710 data 34, 1. 143. 


32. 


63. 


85. 66. 82 ; 


PM 


3350 data 173. 255. 255. 162, 55,134. 1.141 


HE 


2720 data 79, 85. 84, 


73. 


78. 


69. 32. 67 


GG 


3360 data 255. 255, 162. 52,134, 1.238. 32 


AE 


2730 data 65. 76. 67, 


85. 


76. 


65. 84. 69 


FE 


3370 data 1.208. 3.238. 33. 1.238. 39 


GC 


2740 dMa S3, 32. 65. 


68, 


68. 


82. 32. 79 


IF 


3380 data 1.208. 3.238. 40, 1. 96.141 


GM 


2750 data 70. 0.161. 


13, 


44. 


1.143. 32 


KH 


3390 data 109. 1.173.229.221, 72,172.230 


KE 


2760 dato 67. 72. 82, 


71, 


69. 


84. 32. 80 


AJ 


3400dala221. 162. 55.134. 1,162. 8. 32 


PO 


2770 data 84. 62. 32. 


65. 


64, 


32. 67. 79 


II 


3410data186, 255. 162. 104. 160, 1.169. 6 


FG 


2780 data 76, 79. 78. 


32. 


73. 


78. 32. 76 


U 


3420data 32. 189.255. 32.192.255.104.170 


FP 


2790 data 73. 78. 69, 


32. 


51, 


51. 48. 


FL 


3430dala 32,198,255,120.162. 52.134. 1 


Nl 


2800 data 194. 13. 54. 


1, 


143. 


32. 40. 78 


ID 


3440 data 96. 72. 69, 76. 80. 45. 63.162 


Nl 


2810 data 79, 32. 83, 


ao. 


65. 


67, 69. 83 


HJ 


3450dala 55.134, 1. 32.228.255. 24.144 


JJ 


2820 data 32, 65, 76. 


76. 


79. 


87. 69. 68 


FM 


3460data 234, 173,229.221. 72.162. 55,134 


00 


2830 data 32. 73. 78. 


32. 


51. 


51. 48. 41 


KJ 


3470 data 1. 32, 204. 255. 104. 32, 195. 255 


KM 


2840 data 0.200. 13. 


64. 


1. 


58. 0.213 


ML 


3480 data 24. 144, 216, ira. 55.133. 1. 32 


MP 


2850 data 13 74 1 


65.178.194. 40. 65 1 


LO 


3490 data 159. 255. 164. 203 185. 129.235, 172 


\_m»m 


mMw 






4r 




HvrlMmMMv^bnMOft [ 



UK 


3500 data 141. 2. 24. 144. 198, 162, 55. 134 


GH 


4140 data 1. 32,156. 1.166.144,208, 37 




llnnfT 


3510dala 1. 32.210,255, 24,144,188,169 


OJ 


41 50 data 201, 13,240, 5.206,228,221,208 




DK 


3520data 0,160,208,162, 2, 32. 2$.22t 


OA 


4160data 237. 206. 227 221.208,227, 32,131 




HK 


3530(MliaO. 4,160.210,170, 32. 26.221 


BF 


4170dala22l. 169. 183. 160.221, 32, 135,221 




FB 


3540 data 186, 142, 226, 221. 162, 255. 154, 160 


CH 


4180 data 32.138. 1.192, 2,240. 16,201 




GB 


3550data166. 185, 178.218. 153, 0. 1.136 


FJ 


4190 data 32,208,245,240.194, 32,131.221 




lA 


3560 (Um 192. 2S5, 206. 245. 200. 140. 5, 1 


OH 


4200 data 32.138. 1,201. 32.208.249. 76 




FH 


3570data140, 12, 1,169. 4,133. 2.162 


IK 


4210datai20. 1.169,205,160,221.133.34 




JN 


3580 data 216, 142. 6. 1.162,214.142. 13 


NK 


4220 data 132, 35,160. 0,177, 34.240, 6 




NF 


3590datt 1. 32. 0, 1.136,206,250.198 


JI 


4230data 32.156, 1,200.208.246. 96. 13 




BH 


3600 data 2.206.246,169, 17.160.208.141 


OB 


4240 datt 6.147.200. 69. 76. 80. 33. 32 




AE 


3610dlli 5. 1,140. 6. 1.169.231.160 


KO 


4250 data 200. 69, 76. 80, 33. 13. 13. 18 




FA 


3620 data 221. 141, 12. 1.140. 13, 1.160 


CI 


4260 data 211. 69. 76, 6S. 67, 84. 32, 65 




HK 


3630daia 16.132,204. 32, 0, 1.136. 16 


DB 


4270 data 32. 84. 79, 00. 73. 67. 18, 32 




DF 


3640data250. 173, 134, 2.172.135. 2.174 


NU 


4280daia 40.204.207,199,207. 32. 75, 69 




MC 


3650 data 136. 2.141. 43.218. 140. 44.218 


ME 


4290 date 89. 32. 64. 79, 32. 69. 88, 73 




LQ 


3660dala142, 45,218,169. 4,141,136. 2 


KO 


4300 data 84, 41,146. 0. 13, 16.211,208 




DC 


3670da!a169. 0.160.221.141. 5, 1,140 


CD 


4310data193. 195. 197, 32, 84, 79. 32, 67 




Dl 


3680data 6. t, 141. 39, 1.140. 40, 1 


MO 


4320 data 79. 78, 84, 73, 78, 85. 69,146 




BL 

LH 


3690 data 169. 46,160,218.141. 12. 1,140 
3700 data 13. 1. 32, 0. 1.173. 46.218 


IP 


4330d«a 0. 0, 0. 0, 2, 2 








II 


3710data 9. 3. 32. 34, 1,169. 25.160 






FJ 


3720 data 218. 141, 32, 1,140, 33. 1.169 


Help! PAL Source 




CK 


3730 data 17,160.208,141. 39, 1,140, 40 
3740dato 1,160. 16. 32. 31. 1,136. 16 






Ji 




PL 


10 opani ,8,1 5, * lOit-haipl * dOM 1 




EG 


3750 data 250, 173, 42.218,141.134, 2,169 




GJ 


11 opan 2,8.1, "Ot-hrtp! • 




CA 


3760data 152, 160,221, 32.135.221,169, 13 




NN 


128y8 700 




AA 


3770 data 32, 1S6. 1, 32.156, 1,169,248 




06 


13.opto2 




MM 


3780 data 160, 221. 133, 3,132, 4,169, 




HI 


14.bes 




NF 


3790 data 133. 2. 24.105, 65. 32,156. 1 




AS 


1 5 ram tha transactor r>elp utility 




DA 


3S00 data 169, 32. 32.156, 1.165. 3,164 




FA 


16 rem nick sullivan and ctiris zamara 




JN 


3810data 4, 32,135,221, 24,165. 3,105 




JG 


17 rem October 1986 




CI 


3820 data 26.133, 3,144. 2.230, 4,169 




IG 


1 8 rem (c) 1 986 the iransactof 




HP 


3830data 13, 32.156, 1,230. 2.165. 2 




a 


1 9 rem okay to copy. rxTttoseN 




LE 


3840 data 205. 47.218,208,213. 32.138, 1 




II 


20; 




KP 


3850 data 192, 2.240. 18,170. 56.233, 65 




HN 


21 rem do not alter the (ertgth of any 




DH 


3860 data 144, 243. 205, 47, 218. 176. 238, 138 




DB 


22 rem Hne after program is assembied 




NO 


3870 data 32, 53,221, 76, 24,220,169.231 




U 


23: 




NC 


3880data 160.221, 141. 32. 1.140. 33. 1 




LP 


24 a i> 00000 rem 5 digt tink base addr 




Kl 


3890data1^. 17.160.208.141, 39, 1.140 




PA 


26sys'rnit'.a:cir 




ED 


3900 data 40, 1.160. 16. 32. 31. 1.136 




FM 


26 goto 340 




JD 


3910 data 16,250,200.140. 32, 1.140. 39 




PI 


27 I 




PA 


3920 data 1.162,214.142. 33. 1.162.216 




JO 


50 data ' Getting Started 






Al 


3930 data 142. 40. 1.169, 4,133, 2. 32 




DN 


51 data * Pnnting Your Text 






QE 


3940data 31, 1,136,208,250.198, 2,208 




HD 


52 data * Avoydmg Spef^tr^g Errors 






PM 


3950 data 246, 1 73, 43.218,172. 44.218.174 




C 


53 data ' Getting Firvahsd 






DH 


3960 data 45,218.141,134, 2,140,135, 2 




KC 


54 data' 






JO 


3870 data 142, 136, 2, 169, 46 160, 218. 141 




KP 


55data* The first tour data 






GJ 


3980 data 32, 1,140, 33, 1.169, 0,160 




MM 


56 data ^ hnes above are a sampte ' 






MA 


3990 data 221, 141, 39, 1.140, 40, 1. 32 




AF 


57 data * menu that will be shown 






JF 


4000 data 31. 1,174,226,221,154.162. 3 




MC 


58 data * when help m invoked. 






KC 


4010 data 189, 34.208,157,248. 7.202. 16 




LO 


59 data ' Up to 20 menu ttemg may ' 






00 


4020data247. 169.208. 141. 35.208,160, 




JN 


60 data ' be used For eactn one, * 






KE 


4030 data 140, 34.208,140, 36,208,140. 37 




MO 


61 data ' there must be a matchir>g * 






BM 


4040 data 208. 162, 2, 208. 25. 162. 3, 189 




GK 


62 data ' trie on disk, with a 






JP 


4050 data 248. 7. 149, 34, 202, 16, 248, 160 




HP 


63deia "ftenameotihefofm: 






ON 


4060 data 4.169.210.162, 4, 32, 25,221 




AN 


64daia' help-? 






HC 


4070 data 32. 0,218.108. 46.218. 56. 36 




FC 


65 data ' where the 7' represents ' 






PL 


4080 data 24,133, 35,132. 37,160, 0.132 




ND 


66 data * an alphabetic character ' 






FB 


40eOdatR 34,132, 36,177. 34,145. 36.200 




BN 


67 data ■ The above menu itemt 






AC 


4100 rlflta 208, 249, 230, 35.230, 37,202,208 




01 


66 data ' require frienamM heip-a ' 






CD 


41 lOdata 242, 176,202, 96 32. 62, 1,169 




GO 


69 data * through he^p-d 




ME 


4120dala147, 32.156, 1.169, 23.141.227 




KL 


70: 


— 


_AE_ 


4iaOdrt«221 169. 40.141 228.221. 32.110 


' 


HM 


1 00 si - 25 + 1 : rem 25 chara per menu Item f 



I 



'aa 



Jh I20ittd«| 

iaOi^-n*1 t-t+« In<20aattl20 

190 

KDi-122 90ftt}33D i>a 

so 

i«ll«Opoi«j*ra9 tmnbvom 
K JSOpo^f«-200 wncitfiqrour^ 

^ 2|0pol«f <p100 fwnotflOi 
F ?n>pra«'dDn#- goto340 

u m 

^ TtlTrwn MtrniirMi r^uMit km uf 







IC 



FN 
00 



I &, 110 pvn (no 
lEl 320 
^ J30i 
]9iJ«0M 

IcN'aao 

D tOOOcNOM 
\^ tOlOcNvi 

cc toaooMM 

Ice 



VI 3301 



HL 
AE 

cw 

PC 

OH 



fib* 







1030 
1040 Minim 

^OBOOfMTt 

^ lOOOdo** 

■^ iOTO*Ct!ft 
lOSOicniVr 
1010. 
1100 Jut 

TtlOorog 

iiao 

1 1 30 .tti« DM ick/ byw 0V1 bt Mt 
n40 torn biae««irtf) 100 

ttso 

1ieOnurniopbvii4 ftfni^nM 

ItTObOrd 5y«i9 .Ai^ bgrd Cdtoi# 

llOOtMOfe &](«» fi«tot)onac«lQtf 

tno. 

1J10; 

I230«cviri| 

1230 

i»iO 



■ 

JC 

JD 

LE 
Ai 

i 

a 

Obl 

ex 

CQ 
AP 



1700 
1710 
1^0 
1730 

tr40 

1780 
1790 
1770 
1780 
1790 
tBOO 
1910 
tft?0 
1830 
1940 



» 



«« 



«c^h«^ 



IflBO 
1070 
1800 «« 

II 
1 

1910 
1020 
YftSO 
1040 

1! 



Idi f«34 

Ui #<«« 

«V 123 

^ f>p'00 

« tll4 

kit 



.eoriig tOO%i«m 



i«n 



BC 
KN 

Al 

lc 

LD 
HO 
IIA 

m 

AC 

JH 



bnt 



r>ttO<l-pn>g J pmniO Oopy 

123 
t2S 



Hi 
fi 

CF 
C8 
00 
AH 






KP 

00 

o 



OE 

a 



M 


t«0 


PC 


tfTQ 


v^ 


tM 


HI 


1210 


l« 


^300 


K 


^JiO 


V 


>»0 


01 


T33D 


01 


1140 


« 


13S0 


fC 


Tseo 


m 


1370 


eu 


1300 vi1 


PK 


*300 


ift4 


1400 


»^ 


1410 


1/ 


1410 


AO 


1430 


U 


1440 





1481 


KC 


1410: 


Of 


UTOnd 


JN 


1410 


0< 


t4<0 


£f 


laoo 


H 


1510 


fO 


TS20 


&4 


t&30 


JL 


T540 


a 


tM 


TO 


ton 


or 


1S70 


DC 


1510 


NO 


lSB0n3 


H 


IfOO 


Ml 


teio. 


m 


t«0r>4 


Hj 


T630 


DC 


i«40 


KJ 


t«0 


U^ 


iflOO 


W 


1*70 


» 


1080 «i« 



8tk7lT .oonwio 



Ik €un*2 

1*1 90MI 

tfsr ourt^l 

IP 



mom 
no 



CM 
HQ 



11 

t970 

11 

11 

3000 

1010 

ag o 

3030 
2040 «10 



Ml 

d 



8137 

1 

IJ7 

tfttO 



■rOOflAg^^i 



»P 

Ait 10 

«M[)bug 



Aj 
MP 

u 

Oi 
I* 

a 

m 

AO 
CN 



or 



m 

2080 , 
307O. 
3080 ihtriMtJ 



AA 

^WB8 

TO 



CC 

MC 
HL 
ML 

m 



3100 cf 

3110 
3120 
3130 
3140 
3150 
3180 
3170 
3180 
3100 
3200 
2310 



3330: 

3340 ouff 



MTi-O 



.IMMfOOnlOi iDp 



m W 

m 

ibc #0 



«y 



«y 123 






EK 

OK 



+ 1 



•dc 8ou(-«v1 



^toodpy 

,Mil«jtff«lD 
90 hijplDQMMl 






♦n 



M (S23>.y 
08y 



tway j««¥<lio 
Mi ^itowd*iSy 



00 

OP 
OF 

HI 

a 

00 
AA 
lA 

&i 

KN 
UJ 
AD 
KO 
OE 
HO 

00 
ON 



3370 
23800141 



byriuiv 



nrTTT^ Tlnni»i»|iryi 
iji 1 

Idi 8934 

IWP tCin 



CM 



AP 
KP 
LO 
JE 
AN 
CC 
L 
00 
HJ 
KO 



AQ 

m 
m 

00 
LO 

oc 

FO 

NH 
OC 
PD 



2300 tnd 
2110; 



2300 

Q7D 



V10 NpMd Wi ntMM br 
bctfi m oodi «iO NIto oodi 



3400 
3410 
3430 
3430 
3440 
34S0 
2480 

3170 
3480 



KM ooav 

Uy 80290 

n pfOo*(oiJo9-vioMa 

•y o»oo*(c«*>o*t-«CL 

tt pi09*(ni«loo-v«CM8 

i9ir pfoo*C nirtD g*i 



HI 

PL 

OF 

MO 

EA 

CH 

r 

JH 
lA 

lU 
CO 



39S0AMli -biMO 



3700uvbnA MO 

3710 

3720 rMMi byHO 

3730 

3740 orv «cniO 

37S0: 

3780ddbg mmjO 
3770 n i > i0fl MOf^O 
3700 
3790-v •42 



2910. 

3900 :*ieini tit 
3930 iCMipiQQr 
3940 tim moAcuMk} 



md-ttbd 



by 



3970 



0»oo*( 



3890 «idT««Mn% 

3800 ttK) 

3910 



3830orirf Mm 
3940 



MO Mfn Ai ouMut iom tfi» HCOna 

^70 Mm HMmCi»y • ippindid 10 tM 

3880 'W^iomVit'llm 



3000 ocwi 383 *0l-fv|pf Oi 

3010 

JOSOiyiTOO 

3030-. tdtfO 

3040 opt q3 



JOOOtfvout 

jQTQ cftMl 
1090 QMn 



wmomJotimbtm 



9100 

3110 

3130 

3l30cAc«w . 9itoc 

3140 

3180 

JliOttA • tiOO 

3l70M»v • 1140 

3l90di«Vs • 354^1 

3190; 

8300 me« or 919 iduri dMil» iii 
»10 

3320 hvt by fM tmpirt oi t« 
3290.pM9im 4«du0CMMh«i 

MinMdMlMpriMkOgt 



m fc- -■■ — *-- — - 



00 
OF 

MO 
ON 

NK 
KM 



ON 



EJ 
OJ 
A£ 
OP 
ML 
QM 



«i1 tt ._._ 
Ay 90390 
m 



3900. 

391 Jhi toiOMiio tibii tti bi pOiiO 

2530 ,f^ H«Mo tfi() on innma NM 
ZS30 ^^ 

3S40. 

39a0ri4»vd • • 

3880 by«lib80il«a8B99008e9 

2S70 byM 800 Si 7 179 to KX} 800 

3990 b^80080D800if09> 



10 
00 
MC 
EL 
LE 

m 



1340 
3290 
3380 
3370 
3390 <i1 
3390 M0v« 

3300 Na#f 

glQ urftg 

3320 

3330 

3340uvt¥« 

^SO^MiM 

3360 arf« 

3370 



3810 .t« 



fi9«laloiMmQ 



OF 

NO 

Hi 

EA 

10 

HK 

Hi 

m 

PC 

8J 



• + 18 
. + 7 

• ♦17 

• *f 

• + 1 

• *1 
+ 1 

• " »*1 

• * s + l 

• ■ c + S 

• • •♦3 



• ■ 



*W •' 



'Mlpo'vooMur 



TO 

.Mli MUNM idO^ 

dtthv^idcfr 

TMiilMirlOOia^ 



2940 



c 
a 



3400**.43 

3410 
3430 
3430 
3440 
3400 
3480 
3470 
3480 
3490 



1 



3610 
3&30 



3S40 



3570 



Mi yt 

9ipfQ9 

&90M93 

|Tip iojpnpi 

tti 9028d 
*4 

Mil 

epi 89 

boi lOii 
Mi #940 
Ml 8eb 

Ml dtfOQ 

My 0<^«1 

1 



^Mt«y 
• M 
|M 

oMhi)i09lnk 



no 

no 
JMJt nohiy n 



MCl03d 



IIM 



PC 


3B00 


Gf» M jMltfltfiawl 


# 


4S50 m 1 


FH 


5500 piA 


m • 


BC 


X10 


b«Qici3 ,fm 


GN 


4500 K lub+1 tMnplMdiKlO 


LO 


5610 prriacharaciariDliaaoMn | 


AE 


ms> 


lOi naO .1ong1tatf^<:nrt 


Wi 


4670 bni my 


ID 


5620 


KlM ft37 


•M 


msa 


bn* Ki7 .li#t»>d«iK 


AB 


4SB0 fc xub+2 


NM 


5630 


m 1 


OK 


mm 




EO 


4600 


LH 


6640 


m eNem 


JU 


3Wica3 


1^ niO jMnlitf(o(Krt 


S 


4fl00ibT nc ni>*% .btfnp«Miidi» 


LH 


9660 




CM 


ano 




m 


4610 bnt Iti2 


PH 


5600 


boc di 


WN 


3070 iCM 


tt 000 .tMiOfMnltai 


PO 


4620 fC AJb+0 


D 


96m; 




LC 


3no 


DOQ IC06 « MP) - oil 


Ml 


4630. 


HH 


5600 cdc«iaoMaid(Haidpui 1 


MJ 


3tB0 


omp#1 


FF 


4640^12 m 


FJ 


5600 pui>^ 


• «ib+pd^«A)r 


D 


3700 


bn« gci« ytm-mA 


AK 


4060. 


OF 






HO 


3710 


lOi lOeSB Ctfwtif 


NP 


4000 CMC tfndbli •(**«» (^ Att 


AG 


5610. 




00 


3^ 


pr rwn fptftfHQMilf 


U 


4070iub - mA*MJ»-mt» 


Jl 


5620e4lt#dMvoi4vwb|M I 


ED 
Qi 


3730 


M Mi 


a 


4000. 


U 


^HTubaa 


« •-fejbr 


3740 


kSi toeed oi^iwt lacAdd 


ftl 


4000. 


OH 


5640, 




3730 


^r hHh gM mqui MCKfd 


MC 


4700 0|V» • • 


M 


5660; 




t/M 


3700 


M MCttU 


NK 


4710 Opan a hi^li»MP-«. «4 


X 


5000 .HBriOQmaa fit aci^oodai« | 


AD 

m 


3770. 
3780*05 


f"P h^ 


HA 
CM 


4720 M l^«m*S JMi««mcMr 
4730 1* m OpV)l6» 




5070 .Ma 


tmmo-bkxkmnwm 


9000 .ftr« aadon aiMpa 0^ fw uaar 


EE 


3/W. 




AA 


4740 pm 

4790 k^ lacadd 


LL 


5000 .anworvnart. 6 raaifa a riM* una 


GJ 


3100 iCi« 


jV ««C«4I .tflMinMlilOO 


MM 


KL 


5700, 




IF 


3010 




MO 


4700 kt> fS37 


EM 


5710: 




\^ 


3S30ac«7 


Oir ividb .oopyiWtiQarfi 


FN 


4770 «i 1 


PJ 


5/20 t«|p 


m m 


nm 


3ino. 




DA 


4700 ttt #0 


ON 


6730 twrta|>iAllyinafi^ I 


w 


mmmm 


M «LV 


Al 


4700 p Mito 


KH 


5740 


Ua #0 ,oopy9000Q-Oti 


c 


3060 


M titfiy 


LF 


4000 tti t<tt«ffi 'hil^T" 


AJ 


5750 


0y ftd} lotdOOO-tfll 


PM 


3000 


dvr 


MO 


40TO My rxmam 


LM 


5700 


HH f2 


R^ 


1070 


tmi KsS 


LM 


4020 Mi f« 


EJ 


5770 


m copT 


FO 


3000 


p Htfi .oeiMiv 


PJ 


4930 pr Mirwn 


EM 


5700 


kH 04 copy 10400-070 


Ka 


3000 


|np Kil jvrf hi^ p^n 


MF 


4040 J» OPVI 


KM 


5700 


Ur nd2 l»Sa200dOi 


a 


3000, 




KH 


4060 piA 


OH 


gHQO 


lu 


UL 


3010. 




PI 


4000 to Opart fipm dwn 


ML 


SBtO 


pr copy 


PJ 


yasomm 


• * 


U 


4070 pr Oikn 




SMP 


MX mmvmmm 


MO 


3030 triM 


t norv-^criictno M§ Of n 


01 


4000 


NN 


9030 


m Hoav 


DO 


3940 


WJ «|7t .dMrb4i0.7 


GO 


400Oaf1 M :|OM(Wcl| 


PwBI 


5640 


Ur t0i jfiMpiMtkp^ 


JA 


3060 


on #4 J«b42 


MP 


4000 1^ i«34 JQMOMI 


HK 


5060 


bB , to bcm lubraw 


■ 


9000 


•or f2 .dMTblt 


BQ 


4010 m. 1 


fl 


5000 


Uy ftub0> .copymbrouUiM 


OQ 
UA 


3070 


m 


EC 


4020 rii 


U 


5070 


fiDMc^papa 


3100. 




1 


4030. 


ON 


5600 1«1 


Ui tutr.v 


3000 




OM 


4940 cafcdwMaadOwi^^opn 


EH 


5000 


m Mxy 


KA 


AOOOfMooutntsoopatflotv | 


U 


«60of)ril - ut>+Ofin-Mbr 


HM 


5000 


dn 


BC 


4010 JMC* 




ON 


4800 


FE 


5010 


c(ff f|0 


KC 


4030. 




AO 


4970 


HA 


5020 


bna rwi 


ED 


4030 




FN 


4900 fi«l» Minain* - M crw MTM 


QA 


5090 


dv «^*9 HdBOO-fcun 


QC 


404001 


■ • 


DA 


4900*wn Mc'hi|>-T' 


AH 


5640 


NO 


4060 .^^ 


10901 


OP 


6000, 


AO 


9060 


dy ft4) + l2 lorambanaifi 


Wl 


4000 


Ul fS37 »«n«^tf04iC 


PI 


SOTO ato4b8tfuii0adf0lltf««m 


M* 


5000 


Ua #4 .CMOOM^ 


NL 


4070 


«0 1 


CO 


SOSOMnvn • ftjb + hw»-«i)i 


KC 


5070 


di 2 


GG 


40B0. 




MB 


5030, 


HO 


9000 


lox nd6 


NN 


40eoli1 


d^ tdOi2 .umtatmm 


QC 


5040. 


JA 


9000 


di aubtO 


LO 


4100 


&«l4l 


CM 


5060011 > * 


DE 


6000 


Mr 40d0 


AN 


4110 


fc ld02O btfnpotfourt 


JJ 


5000 oMb^fromhabBt 


OH 


0010 


dk «jb4i3 


FN 


4T20 


«G idOG^t _ _ _ 


BE 


SOTO kiM §%37 JOMifl 


KP 


0O6O. 




JO 


4130 


dw iiMlnvod 


lA 


5000 m 1 


AM 


eOXt«a2 


m •^ 


AC 


4140 


bnotol .no-f^M* 


JP 


6000 pr QMin .QMiwbyia 


OF 


0040 


d0y 


PC 


41S0 


Mi f|34 .jm-m^ 


X 


5100 dc jAcMtfa^np 


Ml 


6050 


brw hi2 


HB 


4100 


m 1 


NL 


5110 bccoti 


BE 


6060 


0ac 2 


GO 


4170 


rti 


GH 


5130 


AK 


0070 


br« hi2 


KM 


4100. 




lA 


5130 cmmmtmtaamm<im 


MO 


0000 


Mi f<ldOii coprwliofaoi 


»* 


4190 mA 


1 . .H*i*l) 


Ft 


514090^ - Ub*9»-Mv 


HK 


0000 


Idy r>«dOit loaMvabiAr 


Ion 


4300 




EJ 


5150 


KB 


0100 


m m£*5 


o 


4210. 




QI 


5160 


n 


0110 


dy ub*6 


*^ 


4770 vwnMftjtiroutaiaivsoopad 


CP 


5l70di • * 


ON 


6120 


Ui #<v*ftx^ 


OE 


4230 itom d-Oodi rvnie t1OO0««rv 


HE 


5i60xdteth^fll 


EE 


6130 


Uy »>v«t>Ut 


GN 


4240^nwi^atMd 


OH 


5190 KH fla 


CK 


6140 


da tdti*M 


Afi 


4^50. 




MM 


8i200 pM 


CM 


6150 


dy «J>*13 


KB 


4200, 




Ml 


5210 Itfi tS37 ;lOTi« 


PP 


6100 


Uy #16 


fg 


4?70ttjtv 


• * 


HJ 


5220 m 1 


OJ 


6170 


dy 0oe 


Ft 
MS 


4200 .Cflpv b^ Ibvn rtm aa> flMbr « SI 


NC 


5230 |» <*tfm ^oiatialli 


KJ 


6100 




4200 l0^ttacA»nKtt{fti)f#12» 


AA 


5240 plA 


EQ 


6190 h«3 


pr tut 


PO 


4300 


IOm ff|37 jomtn 


HP 


5250 pr dom 


DP 


6200 


bS f^ 


M 


^10 


•i 1 


JF 


5260 dc MtaoMbli^np 


BF 


6210 


Nl 


4X20 


Ui 0H jtMmoncm 


NF 


5270 bocdl 


MA 


6220 


Ua IOSS0 jav0od(W(^ 


lOU 


4330 


tti ft34 .fomsoM 


OB 


5200. 


e 


6230 


Uy Iaat7 .MifUdchai 


HC 


4340 


m 1 


MB 


5290 cMcdwAAtnttwidd^ 


BL 


6240 


tt 00260 .mlircMnor 


JO 


4300 


M 0« .KttHlonctf 


EO 


5300atfl « aii>*db^aubr 


DA 


6290 


di itfTbt .mawemrngt^B 


LA 


4360 


nc «Jb«& .bi«nplW^«tt» 


ED 


5310 


EN 


6260 


dy uvod 


OP 


4370 


Dn««»1 


00 


5320 


00 


6270 


m i^racr 


ft 


4300 


inc mXt*^ 


FK 


S330l«v • • 


LH 


6260 


W 64 


Qmu 


4300. 




PF 


5340 gal Ha Dyia, rpun n a 


C8 


6200 


da 0OS60 .aowvidpaQt4 


ICH 


4400 «1 


mc tutitl? twnpMtfiacXy 


rW( 


5360 Uton »4rltffy ia||d» r y 


BE 


6300 


Ui t<Sf1r«XI lavauMrtMlio 


l-*c: 


4410 


tvwitoZ 


HA 


5300 kSa »137 fomwt 


JO 


6310 


m fHADO banhrwnbd 


lou 


4420 


ffic «A^13 


IN 


5370 A 1 


AH 


6320 


di «^*5 .ftmfm^^m^ 


EM 


4430 




PM 


53B0 pr Krtvy JC0A fcybd maVm 


BQ 


6330 


dy tub^d 


PM 


4440 AS 


m 


NF 


5360 My Scb gaihvyaNit 


EB 


6340 


di Aib*0 


N 


4450. 




OH 


5400 Ua labOT.y .ccrwioaKi 


PH 


6350 


dy /ub + 9 


CO 


4400 




e 


5410 lOy S02ad ^diAlarnffMar 


KN 


6300 


Ua KuwbrA 


UO 


44T0Ajfcr 


m m 


CIC 


5420, 


AE 


6370 


Ur f>uarbrd 


GB 


4460 C0PrbVl>1rDm(i-yddii«n«ddr 


KK 


5430 kfi de ^fdocMitejmp 


CJ 


6300 


di 4116*12 


¥i 


4490 (lUbf * 1|1D rwn idi* (A«r *K 


HA 


5440 bee ^1 


OP 


6300 


dy Wb+13 


m 


4fK» 


hJi 100 ttttMoncH 


AM 


5460. 


u 


6400 


pr ftjb 
Ui udMt 


6B 


4S10 


IOb tt37 JVntn 


JN 


5400 £ifc abaAM itt*«» d i«y 


DM 


6410 


IH 


4520 


» 1 


FK 


5470k%d* - Wb«l«r-«*r 


OP 


6420 


oni f3 


m 


4S30 


M 0a jto^monaM 


ON 


5400. 


U 


6430 


pr &jb+3 


\u 


4540 


^ nu jamoui 


D 


5490 


L£ 


6440 


Ua ffO^Md DdpyouvUao 












1 Wmlmmm 


tat 


SO 






IBH0iT ^I^Bv i- ^mdHvvW iF^ BVW^P 4^^P J 



PG 



p. 



m 
fco 

n 



6490 

ft4«0 
«<70 



CN 

ai 



PI 
a 

DO 
H 

CO 

G£ 

» 

no 
ic 

BJ 

I 

IC 

cx 

li 

G 

AO 

CJ 
GA 

KO 



DO 



GO 
N 
HQ 
l« 
ON 
X 
FA 

CO 

■I 

ED 

PJ 
MO 

§4 

OP 



JO 

t'NG 



HO 
00 
DO 
Cf 

» 

DF 
HE 
BE 

aa 

IPN 

W 

OA 



to 

0520 

6530. 
6640M 



Wr vHoon 
« iut*B 



Idi hewi .Qitf 



am 

DNfi 



.ij 



6040 



Outy 



iSTO 



& 



67tX) 

trio 

6730 ht6 

6740 

6760 

6760 
6770 
6760 
6760 



to 



Uy fxwnii 

m 3 
mi fo 

pi puDyt 
Ui 3 

wy 4 

KH 1 



dthtfp 



iQOiCt 






jpmtiooc 



6B40 



M 3 

bcc rw7 

trc 4 



6670 
6i80h«7 Idi 



»tO 



6040, 
6860 hiO 



6070 



#13 
pr tmfiifk 



pnntfikfn 



no 



.y6i 



7000 

7010 

70?0 

7090 

7D40 

7060 

7060 

7070 

7000 hiO 

7000 

7100 

7110 

71» 

7130 

7140 

71» 

7160 

7170: 

7teoh»io 

71B0 
7200 
7210 
7^0 
7330 
7240 
7260 



boctm 
bo» NO 

fnp NO 



10 



hilplQpCf 






f>vdbU .«idK> 



kSi t<v«f)MP 

m •<S0O11 
kV f>ldOn 
«i A^«6 

m 2U6«6 
0^ »t6 

t](ri h*tO 

m Bib+t 

«y &^*6 
hdi #606 

kk fldB 

m i!uo+9 

Ui 64 
ih 2 

m Aib 
<% 

bn*ftt11 
dK ? 

bnotttll 

Idi uvM 

7360 M Ban6 



.copy toqni Onvn 
.C6tf700*6drin 
, iDCdOv rttn 

fMoo-idUi) 



7270 
7200 
7390 
7300; 

mor«ii 



7330 

7340 
73S0 
7300 

7370 



QC 
OP 
EO 

JF 



PM 

l£ 
I 

OP 
L0 
M 
MP 
Ol 
KG 



HA 

JC 
KK 
PJ 

X 

m 
m 

m 

rVv 

CN 
MQ 
ON 
OC 
AO 
FN 
8A 
O 
OH 
PJ 
KP 
At 
00 
EO 
00 

o 



BC 

EN 
00 

C 



u 

KH 
D 
EA 
U 

AO 
JH 
U 
PH 
IK 
PQ 
AH 
CF 
Dl 
PC 
PD 
EC 

m 

KE 
EK 
O 

CE 
UO 

to 

JO 



PO 



ON 

Wf 

MJ 

a 
m 

KL 



CO 
10 

AI 
LO 
PN 
f^ 

QJ 



7400 
7410 
7420 
74X1 
7440 
7460 
7460 
7470 
7400 
7400 
^00 
7S10 
7630 
7530 



•V 



Kuvtv* 
lOy 9>utrt3rm 

m iub*t 

«y iub«2 

tii #<fadOo 

M iub+6 
lub 



w 
I* 



Idi §3 



'3ppilo«r 
fvn korin BdOOO 
|<lDutirg¥«C4 
122 626 r» 



putzpbylMbKii 



7540 

7590h9l1i Ui 6d022ji 

7660 «i |07ft.i 

7S70 am 

7500 bpl N1U 

7S00 Idi #|d0 

T«00 M 6dQl?3 

7010 Ur iO 

7620 «r 6d022 

7630 Hr WH 

7640 «v td0» 

7660 m* n 

7060 ton* icopy 
7670. 

76O0N12 Ui 63 

7OB0hi14 tti 607«.i 

7700 M 1221 

7710 d» 

7720 bpl NT4 

7730 lOr 64 

7740 km nd2 

7760 Idi 64 

7760 p QOpf 

7770 pr imem 

mows rvip$m 

7760. 

7600 

7610 tiinMrouintOOpai 

^SO,mmnert ««« «4h ioitfc* papi n 

7630,a.lvofipiOii y.idipagm 

7i40.lOoapyr i oopy'aVi* 

7160 normtf Mfittn. «opy' «« 

7600 UjdOi to wod uano 6^ Btocfe 
7670 €Qpy*^ rto pigt 1 of mvnoty 
7660, 



Mckp6 



40-pgbiflit 



6360 

6300 pn4 
6370 



mc Inert 



& 



«ndal 
no 



6400 

6410 

6420 

6430 FVtS 

6440 

6^0 

6400 

6470 

6460 

6400. 

asoopno 

0610 
6630 pn7 
6530 
6040 



0<N1 
lOy P>M1 
pr pr«r 

m ^^fctk 
cpr #2 

avv062O 
brm prtf 
boqprti 

F VCMT 

pi hayd* 
cfnpf6ao 
Ont prt7 



0«4hir 



6660pr9 fflp 
6670. 



IPC 

.»«0 

.'wcttoorai^A' 

JMipcponHl 
.rtO 



0400 176 
ftom6d2O0-Mi 



JtfupOtf iMdOr 



TiOOieoov " * 

7610 copy nwivry trarch ooeii to hil2 

7900 iic 

7680 byliS24 .'UTItf^titj 

7040. 

^60oopf • * 

7000 copv nwfvv. lOlun «« f k 

7970 dfc 

7960 « 623 MMmH 

7680 tfr ta JHQphi 

6000 l(»r #0 

6010 «r S^ ffMCOb 

602O My 624 mQmkt 

6030 cpl Uk |622).y 

6040 Mi m^f 

0050 ny 

0000 bnt opi 

0070 ftc C3 

Mc 666 



brm cpl 
to M12 



6600 pm pr«i 

6610 
0620 
0630 

6640 



to 



Br 



ma/f 



0670 



6700 pril 

6710 

6720 

6730 

6740 

6760. 

6760 |n2 

6770, 

6760: 

6700 



i^ 623 
Br 60 

kH (02?)> 
b«qpil2 

m p«iv 

ffvy 
bnt prii 



jwiOliriclv 



66tO 



6100 

6110 

6120 

01X. 

0140, 

0150 EV6i 

6l60.pn«a 

6170 

6160, 

6100 pfti 

ft?00 

6210 

s?x. 

SZ40(vl2 



riiipii* 
p oprti 

Ui #668 

023 



040 



^opvitwtti 



0270 ptfS 



P Oii>yi 

puttryi 



a 






gtfdikbyli 
prr(4 



' rwooffi kv 
VfVffwg too twy h»» 



OQONpM * 
0640 tiyli13ai47 

6OOObvtoi3l3i0 
6070 «c'54M« tope' 



6600 JW4 *wo ■ Fwl of V'^Xid. but 

6600 caniiK) Oi KttMM 

6010 

OOSOrti . . 

6«30bylit6 

6040 IK * [LOQOkivto*^* 

8050 tiyto 146^0 



6O7OVC04 • 
6060 bytot3i6 



0000 byli 146.0 
6010. 



m 



9Qao.vrwmataatim^ 

9040. 

0060 

BOOOi0«» tM»0 

OOTOlncrt DyiiO 

OOOOcObrf byiiO 

0000 Hi byto2 

6100MCiPdPrti2 

9110. 

0l2Ov«iiuf •-«*17 

9130, 

0140: 

61 50 ,a fl#K* btfc#i d «^ bytoi 

6160 tor V« hik) tope «nr^ 

0170. 

9160 

0190 rwnM - • 

9200 • - mfn«i4^(3&4lidV0-1 
6210 bytoO 



pa 



IMihni 
Hi* 



6310 
6320 
6330 
6340 



bntpr« 

Ofto*i3 
bvqprH 



bnt prC 






66f mft 



«D 



1571 RAM Disk Copy 



GULP.COPY is a short BASIC 7.0 program with a machirw Ian- 
gmge loader for the C- 1 28 which uses burst mode read md wrfle 
routines akmg %inth the 5 1 2k memory rnoduie tor copying disks on 
the 1571 drive Thir pfQ|rani will make an exact du[dlcaie ol yoor 
single or douUe sided GCR disks (either norma) Commodore DOS 
or CP/M) in one gulp, with no bothersome disk swaps. The 
peopun b reiatively f aid (about 6 miniite^ for a single sided disk or 
12 minulei lor a double sided di&k) and very ea^ to use. Just 
foJkyw the prompts on the screen. 

Because the copy is exact, there b no wa>^ to distinguish between 
the original (source) and copy (target) during the copy pnxxss (the 
id. code is also duplicated) I recommend, therefore, that >'Ou 
cover the write protect notch on the source disk to prevent diiartef 
from striking if you aoMentaliy mix up the original and copy disks 
during the copy process. 

While 6 minutes may not aem particularly fast (some I S4 1 disk 
copy programs can do it in much less), the program is veiy simple 
(therefore reliable) and docs not l«K»t Id sophisticated reprapam- 
ming of the disk drive (In addition, with mott 1541 fa^ copy 
programs, the screen is blanked out and aJi extra devices must be 
removed tmm the serial port. Neither is necessary for this pii> 
gram) With a full diskj 57 1 GULP.COPY is more than twice as fast 
as the 1571 DOS shell 'copy a disk' uiili^, (The DOS dieU routine 
only copies allocated blocks on the disk while GULPCOPY will 
copy everything. Even so. GULP COP>" will be faster (or all but an 
almotA empty disttt) It is ate lar more versadJe. Bacause it coplea 
everything on the disk. GULP.COPY can also be used to copy C- 
1 28 CP/ M disks (OCR format only - but it can be eutty modified to 
copy MFM disks also) and disks with unallocated random files (I 
admit to being sloppy because I don't aNrays allocale the biocks lor 
my random files) neither of which can be copied with the DOS 
shell program. 

Although the target dl^ isform^edon both sMes, only one side Is 
used if the source disk was single sided thus maintainiiig full 
co mpH ibWly with the 1541 drive. (The DOS shell wnttrs e>'ery- 
thing to a 1571 double sided disk which may not always work In 
1541 mode because a file might be stored partly or completdy on 
the inacceiribie flip side). 



The six minutes for a single Med disk breaks down appraadmndy 

asfoUows: 

40 seconds to read the entire disk 
40 seconds to format the ne^- disk 
and the teu to write the new disk. 

GULP.COPY mtA 1571 bum mode to read and write, thus it will 
not work with other dhve** luch as (he 154 1 For a full descriptioti 
o< the burti mode transfer protocol, see the three part series '*A 
Ltyman*$ Guide to Burst Mode" whkh appeared in TPUG maga- 
zine M^ to July. I98e GULPCOPY also uses the 312k memory 
expander module as i RAXi disk. The code to aecesi the eacpansbn 
Is written in machine languid and located at address I0BB8 of the 
cassette buffer along with the burst mode code. The ML routine is 
used becauK of a minor flaw in BASIC 7.0's STASH. FETCH and 



Miklos Garamszeghy 
Toronto^ Ontario 



SWAP commands which are normal ty used to access the RAM 
dbk. These commands cannot "sc<e" the RAM beneath the I/O 
btock at SDOUO to SDFFF of bank 15 because the direct mefnoiy 
access chip (DMA) Is memory mapped into a portion of this area at 
IDFOO and tlie commands do not switch out this block. This 
presents a problem for prugrams such as GULP.COPY which uses 
all of Bank RAM. including the part hidden by the I/O block. 
Fortunately, the DMA chip r egfa a er s can be programmed directly to 
allow it to access other RAM amOguralions. including the RAM 
under the 1/0 block. 

The DMA r egts l e r s are outlined in table 1 If bit -4 of the command 
register is off« tt>e DMA chip will use the configuration specified by 
the memory mansgimant unit (MMU) confiiiuralkin rsgiiler al 
SFFW as tte source or target of the DMA. Bit-7 of ttte command 
reguler is the execute flag- This must be on for any type of DMA to 
take place. If both bJt-4 and blt-7 are on. DMA takes place as soon 
as the command register is written to. If only bit-7 h on, DMA 
takes place when the MV1U configuration register at iFTOO is 
written to Bits and 1 of the command regisler determine the 
operation to be performed. The other registers and their typical 
values are outlined in the table. 

Tnhle 1: 
DMA Reglalera (all r^gs are read/ write except status) 



Addms Function 
SDFOO Status (r«ad only): 



SDfVI Command: 



Bit' 

7 
6 
S 
4 

S-0 
7 
S 



1. 



$DF02 
IDF03 
$DF04 
IDF05 

SDFOG 

IDF07 
SDFOB 
U)F09 



Meaning 

I -interrupt pending 
1 « transfer complete 
I -block error 
0* 128k total size 
1-S12k total ^K 

v«rsk>n number 
t-execufe 
1 - rrioad addr. tegs with same 

i>os. used last time 
O«decode MMU configmation 

atSFFOO 
O.translerC-128 > RAM disk 
l-ttansterRAMdisk>C-128 
2«swapC-128&RAMdidc 
3-verifyC-128&RAMdisk 



C-128 address, lo byte 
C'12daddra8.hibyie 
RAM disk address, to byle 
RAM disk address, hi t^e 
RAM disk bank 2-0 



value ranges from to 8 for 
512korO-] for 126k 



Transfer length Jo byte 
Transfer length, hi byte 



Interrupt masks 



lOFOA Address control 



7 
6 
5 

7 

6 



1 -enable imerrupis 

1 ■ interrupt at eiKi of transfer 

1 » inltmipt on error 

I > do not increment C- 1 28 ad- 

dms during transfer 
1 «do not increiiient RAM disk 
during transfer 



r ni» 



HtJy WO; "WJyfTi^?! MMPm> J 



Ct28 Gylp Copy Program UsUog 



r 



EA 

AC 

It 

X 
FP 

IL 

PI 

00 
DN 

LG 
OG 
EH 
AP 
GF 

MG 

EL 

AF 

C 

DM 

PL 

H£ 
GO 
BP 



*« 



! 



I \ 



MF 
KIM 
KJ 
GO 

OL 

HB 

U 

KK 

KM 
MJ 
DN 

ME 

KL 

ML 

3C 

iH 
MO 

MO 
MJ 

MG 



1000 rem IBM ' 0;gulp copy ' .8 
t0l0pfimchr$(147) print '•• 1571 gulp copy 
t020 prmt. print ' 51 2k ram version ' 
1030 print prmt "bym garamszoghy* print print 
I040et-2S16 e2«e1 •t-3:e3-«2-t-3:remthre«asm 

entry points 
1050dtfnsn(35);ch-0 
1060 tor I -28 16 10 3038 readx pokei.x ch-ch + x 

:n«xt 
1070 11 chO2S600 then print "checksum errori * : slop 
1080 for I - 1 to 1 7 sn(i) - 21 next 
1090 lor I -16 to 24 sn(i)-19 next 
1 1 00 for I - 25 to 30 sn(i) • 1 6: next 
mOfof 1-31 to 35 sn(i}-17:nexl 
1 t20graprvcdr 

liaOgoeub 1360 bank15: open 15.8.15. '0* 

:0pan8.8.8.*f ' o-0;o2-0 b-0 
1 140 prin(#15,*ul •.8.0.18,0 printi15.*b-p:";8,162 

:gatf8.ii$.ih$ 

1 1 50 SI - 1 : ad - 1 : printfl 5. • u1 ; • ;B.0;42:0 (I ds then 

sd-0 si-0 
1160 print print ' copymg " ad + 1 * SKJet. ,.': print 
1 1 70 doeeS printins. ' uO * -t- chr$(4) 
1180 print 'reading. . .' 

1 1 90 a - 52. tor I - 1 to 9. gosubl 410. a - a 4 21 : next 
:iyse3.(o2),l28 

1200a-52 for i- 10 to 17: gosub1410: a-a + 21: next 

:«yt •3.(02 -^I).t28 
1210 a -52: for I - 18 10 27 gosub14lO: a - a 4' sn(i) 

:next syse3.(o2 + 2).128 

1220a-52 ton-2eto35 go8ub14l0 a-a-t-vi(i) 

:next:sy8ea.{o2-i-3).128 
1230 If sd then sd - 02 -4 - 35: go«o 1 190 
1240goiub 1390 print print 'formatting. . .* 
1 250 pfintf 15. * uO • + chf$(6) + chr$<0) + il$ + ih$ 
12€0pfint#15,*u0* +chr$(4>: print •writing. . .* 

:Ck2-0:o-0 
1270 sys e3,(o2}.129 a - 52 tori- 1 to 9: gosub 1440 

:a-a-»-21:next 
1 280 sys e3.(o2 + 1), 1 29: a - 52 for I - 10 to 1 7 

tgoaub 1440: a-a4^ 21: next 
1 290 sys e3,(o2 + 2), 1 29 a - 52; lor i - 1 8 to 27 

:go6ubl440 a-a-«'Sn(i): next 

1300syse3.(o24.3).129 a-52 lori-28to35 
: gosub 1440: a-a-»-an(i): next 

1310 fl a then si - o2 - 4; o - 35: goto 1 270 
1320: 

1 330 prrni chr$(1 47); prmt * • • done - • * : printi 1 5, ■ ■ 
; ddose 

1 340 print tnpul * copy another (y/n) ' ;ca$: if ca$ - ' y * 

th«n 1 1 30; else end 
1350; 

1360 print print ' inaert source disk then press return* 
1370 gatoy a$; il a$<>chrS(13) then 1370: else return 
1380: 
1 390 print- print * insert target disk - then press return ' 

: ooto 1 370 
1400. 

1 4 1 prinlf 1 5 . * uO ■ + chr$(64) + chr$(t + 0) + chr$<0) 

+ chr$(8n{i)) + chr$(i + o + 1 J 
1420 sys e2.a.srKi).0 return 



KA 
OL 

KQ 

C 
CH 

FC 
CN 
JM 
LB 
ON 
ON 
DE 
DH 
AD 
H. 
DJ 
HB 
BG 
FH 
JD 
BE 
KE 
GF 
QJ 
NL 
8J 
U 
EK 
KJ 
HL 
MG 
PN 



430: 

440 printflS. " uO ' + chr$(66) + chrSO + 0) + ChrS(p) 

+ chr$(sn(j)) + chr$(i + o + 1) 
450 sys el .a.8n(j), return 
460 

470 data 76. 9. 11. 76.113. 11. 76.182 
480 data 11.133.251.134,252.120.169. 64 
490data 133.254. 160. 0. 56. 32. 71.255 
500 data 173, 0.221.205. 0.221.208,248 
SlOdata 69.254. 41. 64.240.242.162. 63 
520 data 1 42. 0. 255. 1 77. 250. 1 62. 0. 1 42 
530 data 0.255.141. 12.220.165.254. 73 
540 data 64.133,254.169. 8. 44. 13.220 
550 data 240. 251. 200, 208.211. 24. 32. 71 
560d««255. 44. 13.220.173. 0.221. 9 
S70data 16,141, 0.221.169. 8. 44. 13 
580data220.240.251.173, 0.221. 41.239 
590 data 141, 0,221.196.252,240, 5,230 
600 data 251, 76. 20. It. 88, 32.204.255 
610 data 96.133.251.134.252.132.250.160 
620 data 0.120. 44. 13.220, 32.170. 11 
630 data 32.163. 11. 32.163. 11.162. 63 
640 data 142. 0. 255. 145. 250. 162. 0. 142 
650 data 0. 255. 200. 206. 238. 1 98. 252. 240 
660 data 5.230.251. 76.128. 11. 88. 32 
670 data 204. 255. 96.169. 8. 44. 13.220 
680 data 240. 251. 173, 0.221, 73. 16.141 
690 daa 0.221.173, 12,220. 96.141. 6 
700 data 223. 142. 1,223,169, 0.141. 2 
710data223. 141. 4.223,141. 5.223.141 
720 data 7. 223. 169, 52. 141 . 3. 223. 169 
7Xdata2O0. 141. 8.223.162, 63.142. 
740 data 255. 1 62. 0.142. 0,255. 96 



C12J 


S Gul|i Copy PAL Source LUUog 


AK 


1 000 nm save * gulp copy pat * .6 


PP 


1010 ram •* 5l2k gulp b(t copy for the c126 


R 


1 Q?0 opan 8 8 1 ' gulp copy obj ' 


HN 


lOXiytTOO 


DO 


t04o optoe 


MB 


TO50«-SObO0 


KJ 


1000. 


MJ 


I070rampii -Mi ipH^.y^voughrvn for data 


ID 


lOdOriMmtac -Stc inumbarofiaclDrsioraiilfMil 


OM 


1090MM -Ha ;tMl taritf pon awui 


CJ 


iTOOdMr • tdcOc :«arw dali ra^alir 


HB 


ittOdhcr » SdcOd intarrupl oonM i«giilir 


JD 


il20d?pri - SddOO.sanaiport6S26cia2 


JN 


1i30clrT>acmd « SdlOl dmacorarolarMtuaraQvlw 


JH 


1l40dmaadl - SdKk? Jab of iUrr^ vklran to accaaa 


KK 


Ti50dmato - IdRM labofaiitimalvtpanaKinramloaooaai 


DK 


llfiOdmabnk - Sdm .64»taKlvr«lrvnbanlt 


LF 


tlTOc^naeW •$007 :(9bofbyl»oounl 


JA 


1180mmuoon - HTO ;mmuconM 


ED 


iiSOipmpi -|fM7 jpiAHpoutaHypfattaariilponton/o 


& 


i200Girchf> mpicc :daar ai Ghanniii 


AD 


1210. 


BG 


1220 I7yto76.<ar«ry1.>«niry1 


DH 


t230 byta 76, <antry2. >afitry2 


Fl 


12^ byia76. <antry3. >ar«y3 


r 


1250; 


FJ 


1260 ; •• amry potfH it - wriladtta lodMIt ** 


FM 


1270ar«ry1 . • 


00 


1200 ata rampcr<f 1;h9hfampir 


OJ 


1290 m rnnaac ;i aadon lo wma ou 



m3 





NK 


t.ino 


••1 


MD 


2020 moras 


■ * 




HL 


1310 


Idi #%01000000 


HO 


2030 


pr M(Q0i .^dtfafromdak 




NL 


1320 


M MM 


OG 


2040; 






NH 


1330 


Idy 90 


FP 


2050palfnor 


■ * 




CX 


1340. 




FA 


2060 


pr oanQai .yai oaB nom oaK 




NJ 


1350mof«1 


m 4 


GM 


2070 


tti f^tOOiniii :lhptoramOandt«nial 




BN 


1360 


•8e 


NO 


2080 


tfx nwDuoon .fnmu control 




OF 


1370 


pr ^viipl iMluptalsenitport 


MP 


2090 


m (fampirKy Jiorabylainnm 




KN 


13110: 




BF 


2100 


Idx iO .bach to nornial 




LI 


1390MIM 


m * 


DM 


2110 


tti fWTXJCon 




HI 


1400 


Idi d2pf8 ;t0f iii pott 6626 04 2 


C 


2120 


ny 




mi 


1410 


cmp dZpfi .Mil lof clMngi ot Mli 


Fe 


2130 


pna Qalmor 




GP 


1420 


bne MtfK 


CN 


2140; 






MA 


1430; 




NN 


2150 


dac numsec ,decrea^iaectursiooo 




FE 


1440 


€0f MMt ;lNtMli 


HI 


2160 


b6Q back2 .rfaac:- - nthanialurn 




HM 


1450 


and moiOOOOOO 


AP 


2170, 






00 


1460 


beqwatfM 


ipNV 


2160 


iX ramptr^l 




ED 


1470. 




Nt 


2190 


fnp mora2 




OH 


1480 


Idx #%00111111 jillorramOandkimtf 


OA 


2200. 






PC 


1490 


su mmucxvi .mmuoomrd 


KO 


22l0bad(2 


m m 




CH 


1500 


Ids (firfiplf).y ;QOl ffOfn wn 


KO 


2220 


eS ^^ 




LB 


1510 


Idx 00 .tal badilo nomvl 


O 


2230 


jar okchn *claar al ctiarviali 




NA 


1520 


iU nviKioon ,mnm iXM 4n3l 


HHV\ 


2240 


m 




EJ 


1530 


M dbdr iflnil dMs fWMlBf 


AE 


2250. 






LF 


1540 


Ida Mb4 


Kt 


2260cttgai 


m * 




OH 


1550 


•or mOIOOOOOO ipMli 


JN 


2270 


Ida i6 




NK 


1560 


fl8 Wbi 


OF 


2280: 






NB 


1570 


idi f6 


OC 


2290 wmZ 


■ * 




CK 


1560: 




El 


2300 






BG 


1500 Mil 


■ • 


FJ 


2310 


baq waiO 




IM 


1600 


bit Oct ;intamjpt control mQ0m 


01 


2320. 






FN 


1610 


boqMtl 


OG 


23300011 


■ * 




KM 


1620; 




DO 


2340 


Ida d2pra .■enalport6526cia2 




00 


1630 


wry 


KO 


2350 


•or mioooioona 




CN 


1640 


tjrm MM 


PP 


2360 


ata d2pra 




K) 


1650; 




OJ 


2370 


Ida dadr MrtaldalarvgiMr 




CP 


1660 


dc 


EO 


2380 


ris ; got data * raitfn 




Kl 


1670 


tv ipnipl ;til up tait tsnal port 


MM 


2390: 






IB 


1680 


brt ci«7 .vamjpt control r«g«iar 


DP 


2400:-antypor«f3-ii*ilncon«ioura6on*- | 




JK 


1680 


Ida dZpra iianat pen 6526 aa 2 


PD 


2410anlry3 


m m 




JO 


1700 


ora iWOOiOOOO 


FE 


2420 


ati dmabnfc .64ltatf»rnarivnbanh(0or4) 




FH 


1710 


M d2pra 


D 


2430 


aoi amacmo .cvna oorvroaar vaiua rwQ&m 




DL 


1720 


Jda #6 






(128 or 129) 




O 


1730. 




OH 


2440 


Ida m 




KP 


1740 MII2 


« * 


OA 


2450 


Ha dntaad .^ ci miamai addraai lo acoaaa 




OF 


1750 


On CVCr .ffWrrUpl COnnOI fvQBMr 


CJ 


2460 


ala dmato .itb of CMiarnat axpanacn ram lo 




NO 


1760 


baq wa«2 






access 




AG 


1770. 




ON 


2470 


M fvwo>i jnWo 01 anarnai wpiwon rarn 




DA 


1780 


Ida d2pra :ianfllport6526cta2 






toaocaii 




JC 


1790 


and #%11101111 


NA 


2480 


ala dmadri Mofbyiecouni 




PM 


1800 


ata d2|pra 


OP 


2490 


Ida #$34 




LG 


1610 


dac nunaac 


m 


2500 


«a dmaad^tnutootimefnilacldPaaiioaooaat 




NJ 


1B20 


baqbackl 


KE 


2510 


kla i$c6 




MJ 


1630. 




FH 


^20 


M dmadal 4^ tmab ol byia coun 




NG 


1840 


>nc rampant 


U 


2530 


ttc MtOOnntl aattorramOandkamal 




FD 


1650 


fnp fnoral 


JA 


2540 


•tx rrVTHinon mmu oonlrol 




KL 


1660. 




AK 


2550 


Idx fO .Vwi twck to norrnal 




£B 


1670 bach 1 


m * 


NB 


2560 


•tx mrmjcon .mmuoon^ 




GO 


1880 


d< 


GP 


2570 


rli 




EO 


1890 


|v drchn :dear al channala 


Kl 


2580, 






r 


1900 


m 


KP 


^90 and 






MO 


1910. 










PO 


1020 »«r«rvpo«ili2 -OH dM from <M» 








MF 


1930«nlry2 


« * 








PO 


1940 


m lampt^l 








GJ 


1950 


an rwnaac 








BK 


1960 


Hy rampir 








rfP 


1970 


Idy §0 








FF 


1960 


lai 








OE 


1990 


bft cUcr .inlafnjfil uuf 4f U raoMv 








HH 


2000 


^ QUI :oat data from dtsk wnhout Mil 








AF 


2010: 










1 wmlmmmtm 


aa 




M^rfiVrMaaMaMHaaOi J 



I 



Textscan: A CP/M 
UtiUty For The C 1 28 



Aubrey Stanley 
Mississauga, Ontario 



. . . TEXTSCAN was developed for viewing Z80 source files. You 
can view in either direction, control the number of lines you scroll, 
turn on line numbering, search for a character string and more, , , 



We'd aJI gruwn accustomed lo the 64, even our pel budgie! But I 
Mfanted an 80-column screen. On that 1 was quite adamant. So we 
traded in the system, printer and aJI, for a CI 28 {minus pnnrer). 

One ol the things I plan to do is develop C128 and CP/M mock 
pro^amn using the Z80 chip. TTijs makes a lot of sense, but you 
need the tcxils. Thtt could prove expensive, and there's not much 
around (or t^ CI28. But for un<ler thirty bucks (Canadian) you 
cDuid send away the brm from the System GuMe and receive the 
complete DRI CP/M Syslem: source, utilities and manuals Thais a 
letl bargain conskk*ri ng you now po«eaa a complete Z80 develop- 
ment iQfMfld You can use CP/M mode to develop in Z60 and later 
port the rode to the C12B environment. Porting is a separM 
exercise that Til tackle when the time arises. For now 1 need to 
understand what it takes to control the hardware through Z80 
code Tile DRI package Includes complete source code and this will 
provkle a valuable insight into Z80 interfaces. That's one reftion 
why I developed TEXTSCAN. I can examine an entire source file 
very easily, right there on the screen, and not tiave lo print it (even 
if I did have a printer) 

CP/M docs have a built-in command called 'TYPE", but it is onty 
really adequate for cursory examination of text It displays a screen 
at a time, alioMing you to go lurwardii through the text in a 
Kquential manner. TEXTSCAN gh^cs you a viewport Into your 
eiMife docunient. You can view in either direction, control the 
number of tines you scroll, advance rapjdiy through the text, turn 

on line numbering, and even search for a character string (great for 
examining source code?). And it is fast 

The only limitatkxi is that it will only ioad the firti S4K of a fiie into 
memory for viewing. I can t imagine sofneoiie creating files that 
large, but if you need lu view one, then split it up into smaller pam. 

Creating Tlie Prof^ram 

Assuming of course that you have received the mail-order pack- 
age Ibted in the System Guide, then f^neratini? the program is 
fairly straightforward. The fir^ step is to create a bootable CP/M 
di^k to work with, Furmat a disk and use PIP to copy over 
CPM + ^YS and 0CP.COM as explained in the System Guide Also 
copy over ED.COM unless you are lucky enough to have another 
editor. (Almost any other editor is better than EDt). Next copy 
Z80.UB from the DRI Source disk, and the files, MAC.COM and 
HEXC0M.COM. from the DRI Additional l^Mlitiin disk. 

RetxxH the system from your work disk and use ED (or alternative) 
to type in the sourre of TEXTSCAN ASM saving it under this 



Here you canitui use the Verifoer to help yuu, so be 
especially careful in any case, double check your input for the 
SUMCHECK routine which begins tt>e program. Of course you 
neadn't enler the comments (anything beginnmg with *;% 



When you are latftfkd with the file, run MAC TEXTSCAN. This 
will generate three output files with extensions - .HEX. PRN and 
5YM, Correct any assembly errors that are listed and repeal the 
process You may need to run TfPE TEXTSCAN PRN to identify 
where some of the errors are. as tfie macro process may display 
errors which are difficult to place. 11 error free, then as a further 
ctiedc on your input, make sure that the display stMiws "0656' (tait 
a w emb led addressj followed by an tXah USE FACTOR', 

Now run HEXCOM TEXTSCAN whk* will convert the HEX file 
into an wecutable program file. TEXTCCAN COM It should list a 
fint addiess of 0100. last address d 05BB, bytes read 04BC and 
records wrHten 



Using Tex tacMi 

Start by run n ing TEXTSCAN TEXTSCAN ASM to view your source 
file. If all IS well, the entire source file vnll be read into memory ifid 
the Rr« 24 lines displayed. If the program crashes, then most likely 
a source error fn the SUMCHECK routine itsrif caused the crash. 
Ctieck this *>ourt^ dgdin However if it>e program prMsa T and 
then gracduliy exits, then a bad sumcheck has been generated, 
meaning that there is a typo somewhere in your source. Correct 
any errors and reassemble your progrMi. 

With your text file db^l»yed on the screen, you have several 
options, all of them cluMered around the Numeric Keypad and the 
lup row (except for the function keys). You 11 find that the keys give 
you imntediate response. I.e. you can instantly modify the actk)n 
n text is being dLsplayed. 



(ENTER) - Outputs the number of lines last defined by the (0 - 9] 

and U keys. 
(0-9) - Defines I to 10 Htm tor output. (0) counts as 10. Also 

acts as if (ENTER) was pressed. 
(.) - Defines 2A lines for output (daiwlt) Also acts as if 

(ENTER) was pressed. 
ihU) -Toggles Double mode which allows keys (0 - 9) to 

define 1 1 to 20 lines for output 
(+) -Changes scroll direction upwisrdb If held down, will 

continuously scroll lext in the forward direction. 
(-) - Changes scroll direction downwards If held down, will 

continuouslv scroll lext in the reverse directkm. 



iaarif7;vm«f^?.iWM»os ~] 



i 






(NO SCROLL) 

fTAB) 

(UNE PEED) 

(CRSRUP) 

(CRSRIXyWN) 

(HELP) 



(ESQ 



Toggles ScrdJ Mode wUae lext ts conimuously wrrolkd in th€ current 

direction. 

Skips 24 line m direction of icroll ind am as if (E^^^ER) was ptemoL 

By repealedty tabbing you can quickly advance through the text. 

Toggta Line Number mode wht^re line numbvi hc diiplayed before 

each line. 

Goes to the beginning of text, fctsa (orwaid direction and then acts as if 

(ENTER) was pr^ied. 

Goes to the end of text, sets a reverse difedlDn and then acts as il 

(ENTER) was pressed. 

Erases the current line - tof> Hne in reverse scroll, or bottom line In 

ibnvard scrofL Now you can enter a strinit of up lo 40 charaden. The 

line eduuig luncuans Mi|)pOfled b> CP ^ VI wiit work normally. Pressing 

(RETURN) caustt a search to be initiated in the current direction of the 

scfoU, i.t, eitfier to the beginning or end ol file The first match will 

result in a new set of lines output, Mrtrng with the matcfMxl hutt. \i 4l)v 

seanrh fails, the origina] line that was erased will be re-displayed. 

Exits back to the CP/M, 



Leaaona Learnt 

AMKXigh f had prevloiisly codtd In Z80. this was my first attempt lAith D'/M and wtih a 
C128, So obvkmsly some lessons were to be learnt. 

The CP/M Macro Assemblers. MAC and RMAC, support aft the ZftO in^itnKtfons thmiigh 
the Z80 LIB library file 8y itfing this file you can code all the Z80 instructions. 
TEXTSCAN uses this libraiy extensively. Eiamine 280. UB to understand the syntax of 
ttie mnetnonics used. 

I liked the CP/U^ bdlity to read up to I6k a1 a time into a specified aiea using 
Multisedor I/O. TEXTSCAN does this in a loop with a count of 3. each iteration reading 
uplol28saclol!S(l28times 128 bytes, or 16K) Then if there isstilt data to be read, the 
loop is executed once movt lo read in a funher 6K. On each read, register H returns the 
actual number of sectors read if the file b exhau^ed. Otherwise register If contains 0. 
This is not too obvious from the manuals. 

I couldn't find any method to make keys repe^ in CP/M mode. Because t wanted the( 4 ) 
and H keys lo repeal, (in order to scroll), I decided lo bypa» the BDOS console routine 
and scan ttie key$ myself. As the keys I'd chosen were CI 28 mode ke>'s, 1 had to unravd 
how these keys %tfere scanned. The result is the KSCAN routine which scans the CI 28 
keys. 



Scanning the C 1 28 keys means using the 1/0 registers m the OXXX block d inemor> . But 
CP/M transient programs do not have I/O turned on in Bank I where they are run? Yet 
TEXTSCAN works even witfunit manipulating the Configuration rc*^isiers. Tliis leads me 
looondudethai if you use the Z80 Input/ Output instructHHis. then you do not need 1/0 
switched in to access the 1/0 registers - a bonus for Z80 programmers! 



TEXTSCAN Z80 Source Code 



■ TEXT SCAN' FOR CP/II + ON THE Ciaa 



stfmf aqu no 



jSat OUlpul dsimiir 



.Aulmy9lvitv.Noif10ae 




FtoCcMroiBtoch 






tob aqu 5ch 
ktm equ iot>^i2 


niaoil>f0O 


.Z0O macro ttrary 


Ic&cr aqM tcb«32 


ofg ^(Xf^ 


,SMrtaddrm 


* 


,CPfUfsMK»pn 




« Comoii Silhf lor Ftfvl itviQ 


boot aqM 


.ifimmwm 


iSnitiU aqu OQh 


txtos squ 5 


QPfU F uncwxi Vector 


mx aqu dmabuf ;MpicMft 


doot aqu 6 


.Diactoonnli 


nc aqu mx^l rNtfncnan 


pr«tf aqu ft 


.PtYittnnQi 


iQhv aqu nc^l ;CrwMnna 


tehPi aqu 10 


.RsidconsQktbUtar 


p 


optri aqu 15 


Opanlii 


.Chtnamiuumm 



rSMJl 



•qu It 
aqu 20 



aqu 
aqu 44 
aqu 1 



MOMAaddrtM 
MM SBCtortfO 
;Sm oorvQli inodi 



aotfttc 

er 

i 



aqu 
aqu 
•qu 
aqu 
•qu 



Otfi 

itft 

oen 



.Aa* tfipui rrtodi 
ErxJollli 

.Carnagaret 
.Lralsad 



M aqu 071^ 

! DaoodM vaiuat tor Ct 20 Nays 



parctf 

m«iui 
•ndcrf 

t)qnot 



24 



•qu 

•qu 27 
•qu 2a 
30 



aqu 32 



runtiar aqu 31 
al aqu 33 

tab «gu 2C 



•qw 
•qu 34 



CKfV0 

0-9 

At 

Itto 

Erav 

Halp 



WLMVf 

dr 

mum 

doubli 

cntl 

cne2 

oourt 



lor 

•qu 
•qu 

•qu 



onfiaDt 



•QU 



•qu 

•QU 




1 
2 
3 
4 
5 
6 
7 
8 



Scrolfnods 
Sioptcrol 



lti4 laachad 
Lfv fuffltisnng on 
OoutMO-9vtfuas 

CtfTWtnimbtrlor 



cttatfTL 0€CK5UMSvoi#codi- 


£an bt DELETED «i«w) si a «tf 


ta 


b.pioqsnd-sisn .Ccuxt lo chadi 


tor 


mm 


iFrvntaun 


u 


hdlTOh 


■ChicfcstfTi iiicaii 


ffW 


d.O 




CN« Hfy 


tX) 


.OtecitldQp 


dwt 


d 


addSt^Ms 


my 






<ta 


t 




inOM 


ab 




oa 


c 




P^ 


dhk§ 




mov 


al 


«9>oiid 


ora 


n 


. dtO 


fi 


Hvl 


iQoodaxI* 


fT>W 


CdC<)i 


JBMoodf 


ba 


a'> 


r . ^ptW? 


cai 


bdot 


. and 


m 




mm 


XND OF CHECKSUM OOOC - 



mm 



An atadit and opan ito 
(MP 

a :Mtlcb 



X)vm 



(km 



6kii 

copant 

bdet 

a 

nad 

dioprwT .BaoDpan 

Cpnrtf 
csi bdos 
Mtoivitsckandwl 

fit 



on 



btt 
ba 

mm 



m 

pa^Qi 

h.O 



;lniwciorco(rt 



Cif 



• 129 
ajrnn 

cmioct 

IlKlOi 

Icounr 

dr1t)a^ 

dpop 



:t2asacionio 

jftSM lor hoop 



pu^ d 
mvi v48 
tt a.lmt 
cmaad 

poo d 



Sit 

3 

Sunoifaaavai 

flMdupio4aK 

Chodiandoma 

Sawttfnaaddran 
Raadaamort 



1 mvte 


lOMV 


1 raad 




tfid 


hna 


AdOaaacf 


0«0O 


F 


0«Q 




1 dl 


riDOp 


.n«aduplD6Kmqi« 




te 


M 


;...!*« hna 


4 


* 






wfiom Id 


d.tct) 






MS 


hno 


InaTMnlMf 


tMft 


cp 


bQnP 


.CuraUi^ 


1 ''^ 


c.cioa# 




priO 


cai 


9» 


.itenaxtma 




r« 


0144 




1 ^ 








m 


pno 


tfailm« 




nupti 


phjapr 


. Scfti up diiwson 


1 ^^^ 








HO 


Ira 


.SmvMlna't 




In 


tt.tMQI1 


JrMlna 


ft 








Mt 


an^ 


inani^nbaf 




Md 


una 


^V4^^^^ ^v^a^r 


Mw r^iim wm cfm% 




hri 


ft.tMQin 


.Siani»«> 






M 


.U)t1 


1 Hd 


y-m 


iRMMdota 




Md 


in* 


, tnfena 




r 


0146 




■ mvi 


6.7 


Couft 




bd 


lil 




0M 


op 


amol 


.C«nDo«n(7 


M10 dK] 


h 


.OouCMvafcjt 




Ml 


lAO 






(fltt 


0i5O 




1 dcf 


b 


, . -7KnM 




mvtt 


Oknf 


,Claarhm« 




IVNU 


Oar 


.oCioi dovm dv 


1 f^ 


b^lO 






mvt 


aJ 


Sail/ 




Hd 


land 


.Endofflaad««ii 


1 to 


O.^WQ^ 


SMrt 




mvi 


CKlM 


diiniair 




M 


b2000 


Mam lanpn of hna 


1 dK3 


d 


ErU 




cai 


bdoa 


^ tordulput 




etfi 


MirM 


Go bade IIP Mini 


1 mvt 


awmc 






bn 


driMmp 


Cdoaolamodt 




Hd 


fn» 


.LaMlnantfnbar 


|i»^ dci 


n 


fMMtfiar 




mw 


Cioonm 


,. Mm 


^M 


Ml 


Ino 


.Una ni^nbv 


1 Cf^ 


m 






eal 


bttM 




^7 


cgl 


CMr 


.Oaaf icraan 


1 ^ 


Mm 






oaa 


Giaar 


«UMriCivafi 




m«ai 


OMi 


,Ciaarim4oond«on 


1 mcK 


Lm 




« 








0rtS 


ipi 


a.oifl 




1 m 


h 




ptoop 


.Pnnt JLKJ|> oorapdb output 10 t9van 




m 


acti 




1 cpi 


1 






idH 


aofi 


;Uniattou«wi 




f 


0«4 




1 ^ 


iomtO 






m 


acr«2 




r 








1 mvt 


m.cf 


€AtFai«l 


plplO 


cai 


OaMy 


.Cpntfaona output 


OfcSQ 


cp 


31 


.m^ 


1 #01 


h 






ho 


diMd 


.rc^B^id 




fm 




1 fWA 


m.ff 






Ui 


aA 


U . .pracifen 




cai 


nnd 


,rtfid fvm iHiQ 


1 fix 


h 






ofa 


a 






imf 


0rf7 




kffiTO mvt 


m.MfTC 


IndoiNacftar 




m 


Pipi2 






mm 


1.042 


;llnaauM 


0id 


fm^ 


.EndQif«aaMWi 




U 


dJMi 


;ftadnMRf 




ITfVtt 


Oaopy 


Qaaracfoilao 


m 


h 




l^plt: 


mm 


C,prrtl 


.OMpinaartordMii 




f 


0«4 




tfid 


InM 


Jjii buBar idaiia 




cm 


txloa 


InatftftQ 


gkS2 


cp 


(TWXji 


Unu^ 


rv 


port 


XM^WtlQlM 




ora 


aJnuA 

a 


Chadiina 




»a 


064 

a 


^4a mu« ba Piui« 


tai RMdi fTMnaon 


1 air¥] i<Mpa count 




cm 


rWTtom 


on and output rx#n 


0** 


Ui 


b,Pr 


Updiiid'vcbon 


1 PUi^ 


d 


SavtOnaaMm 




oai 


bi*i 


.Expand fena A bAr 




aP 


«^ 




1 mvi 


cj«n^ 






idad 


ir«ii 


Xinabuivaddraai 




Qfnp 


b 




m 


bdn 


.SatdmaaM«ai 




(Tw 


CprVli 


^uKlut 




^ 


iW 




btt 


d.lcb 






cai 


bdoi 


.ma 




F 


0147 


.Dwaction chanQod 


ffM 


Cfvacf 




PiptS 


cai 


5*n 


;OatnaKilnapoiniir 


1 








CH 


bdn 


.naad mtLAaa^o'v 




Oi 


a.Mi 


Omtimwm 


at<tt 


tti 


ftpaoi^ 


^Owckaeitfon 


CP 


2 


.0adirrv? 




oia 


a 


wichiri 




om 


a 




^ 


rtp6 


^ . AOl 




n 


Dtp90 


Noi 




n 


0i7O 


No* 


- 








mvn 


O.«op 


.Stop output 










■ff .E^^oftfMdi 






r 


pipio 




g« 


mvn 


1.ora2 


.F4M on^png oOMft 


In 


d.roarr 




pipio 


ocn 


a«2 




gM* 


idi 


&MI 


^QWi^ IfM rVtCflMI 


mvi 


cpnntf 






pm 


Alio 






Ofa 


a 




cai 


bdot 






mMi 


OjiDp 


.CoMm^mamap 




fni 


0i7O 


:VM 


bi^ 


d.icb 






f 


pioop 






mva 


nacfoUlDC 


KOlirVbpoontflvi 


mw 


CdOMf 


Cloaa 


.Aeaom^vsympMi looptuniSttpdaarad 


* 








cai 


ddot 




^^^^T 


.niMiioutna 




0(70 


Ite 


LM3p 


.VMDpOOndMBR 


rv 


fm« 






cai 


hacan 


Scaniaftlvya 




on 


a 


Vkpn 


' 








on 


a 






Ji 


Oiivv 


ipopunitciaar 


n Of! 


a 


.UdfilDfaad^ 




^ 


flWO 


Nopraai 




rat 






I f^ 


fM 


Nd< 




00 


fwnbar 


Xim^miP 










m 


hJflM 


SaxtMooiA 




imt 


fl^ 




(4*1 


Atfwva 24 anaa 




M mov 




.# Mdot raid 




MOni 


wugn 


.lbg0i«fii 




Kto 


aM 


Dontadwtta 


1 mvi 


d.O 








a.irMTi 
0M 


. ntfnbar VaQ 




Ota 

fltt 


a 


; . .1 
onitffii 


1^10 jtfTiiMnaQrtiQiv 


A 










fiwai 


2500yrt 


HO 


um 


.Uffim count 


Qk20 


cpi 


ab 


.ttbr^ 


i«*i1 


dpri 


COM 




dK) 


d 


Add Ni aadoft i<aad 




r» 


Oh2? 






era 


gaan 


.Oatfwtma 


tf«i 


kw 






cai 


upat 






rm 


k«in1 


.Notonimi 


tup 


d 






r 


^MB 


poMon 




flMR 


OJm 


.Ctaarlrrai4iaik» 


cp 


1 


Endotfii? 


0^122 


cp 


m 


AT 




lai 




d«>tfMvtlna 


n 




Jail 


k 


im 


o»oo 




* 








fTtyi 


a64 


NM(^naadtMMa 




■Oni 


doubta 


;foo0a 


gaan 


.Qatn«dlna 




add 


d 


up iZStadon 




aci 


adoutili 


douttial^ 




Hd 


Ina 


LmvadMii 


fflOv 


d,a 


orf6KrtOe 




otf 


•OtfVt 


.Souidbdi 




bp 


b.2000 


.Uaxiangti 


den 


OQlrt 


Any mora raadi^ 




r 


MiO 






Ml 


a* 


.^vc^ pracaon 


fm 


rtoop 


yiai,oonanu»i<n(tng 


• 










pra 


a 




Kra 


a 


momt^iimmmm 


gh30 


op 


anMr 


;Enitf^ 




n 


uprwi 




« 








F2 


0« 


ym» 










L- _--. 








P* 


*» 


,Noc ■ m#TMr t«y^ 


U0Ui 


m!(t 


a 


SaarertcAar 


■vt nnua iQf pnntnQ ■• 




cp 


If 


.A»Qdi«v Hlna^ 




bn 


d.1 




mvt 


a,40 


40charbi*r 




iTflC 


0134 


.YW 




oor 




.fndnptflna 


ita 


mi 


torFftf 




mov 


b.A 






mvi 


aaomc 


.HMOttadtorat 


mw 


naCitf^flPI} 


Tbiorai 




idi 


a.doubia 


OouHaii^ 




omp 


m 




rtmM 


Q.KrcHy 


Notoontvuiua 




ori 


a 






fv 


upnlO 


.No» 
.Aati^lnM 


mta 


O.douMa 


dont doubMi cart 




mm 


ab 




uppIO 


rnww 


1Jm4 


ifntu 


v^mjn 


Onacaon 




fi 


004 






vat 




. aai 


mva 


O.mtfii 


NolnantffitMn 




add 


a 


DoubliHl)0 


« 








mvii 


t4cnt1 


24lnMaftmt 


g^ 


tti 


a.a«i 


.Na*ou«uiootf« 


^Smti 


Ida 


brtt*1 


.Oiadi 


ba 


II.Km^'^''^ 


Shnba^nnnQ 




r 


^m 






ora 


a 


1 


fnw 


m,aamc 


oflii 


006 


cp 


fWOt$ 


NoSdOT 




imi 


KvnCtf 


on 


iU 


h 


mmhm 




fnz 


gMO 






Ida 


bno 


fm 


IfHH 


mj 






■om 


aadr 


/togtfa 




dpi 


1 


. tow 


fU 


ti 






«» 


a^aeraiy 


;. icfQi lao 




^ 


upptO 


YMl 


ItotaMC 


4or 








1 


U 






itav 


mshymmrnhmmok ~1 



i/cnC2 


Od 


A 






«i 


fovrw 


^ditcbon 




HM 


h 






dpi 


fl 






etf 


gM> 


.*dM>m«ianm 




mov 


m^ 


;SoM' lEPHMd chifigai 




fflw 


ai 






ctf 


WW 






ftK 


n 


ji'^K^^ff ^^^ 




b« 


dL-1 






tm 


debet 






rtcr 


d 


;. . JIM POM 




oodr 




;ftvlpmM)uiln* 




id» 


aOf 






dor 


t 






m 


A 






on 


* 






rw 


hacnS 






ta 


H 






C 


«M(£ 




■ 








h^vnlO^ 


tf4t 


bw 


.NMftns kMvs 




d.OK)p 


.1opm« 




.PfootnOwnQW 




ffWW 


Ofeni 


.OMTlmi 


IndOr 


mvi 


cpmi 


flMrma 




• 








Md 


mo 


.UpdM 




cH 


tidot 






W 


Mflbit^^ 


t,¥wm 




dKS 


d 


; tot 




lu 


dftnitxl 


.BiJIarlotnpui 




mov 


am 


,... amk 




tfiid 


tno 


tugrtam 




ftm 


COOnrI 


.QMtfipuiMnng 




m 


1 


„,f?r? 




fVfM 


ai 


,Atli#n 




cH 


tXtoi 






m 


l«;l«1 






gra 


• 


□DOd 




tti 


no 






oil 


dam 


.Omtwcwm 




w 




.cor^dKm 




ori 


a 






rv 


fno 


. indM 


* 
* 










« 




.Empty wtQ 


Itfigi 


mov 


am 


* 


■ 










m 


acount 






m 


OOh 


,«/*pfi«i^ 


runout 


.Output hntmOTto 




Hi 


mo 


.Sto« 




n 


h 






Nr 


Inflic 


BiMtotMing 




tf«i 


MfflpA 


;. . ttfwf m* 




n 


iicfto? 






Nd 


Ino 


.LfwrwnlMr 




tid 


«nt 


;.. ptnmonnN 




ort 


m 


ffoivi A ctimo* 




fcB 


d.- 10000 


.%itWuttrOl 




tfiid 


Mmpl 


. homMcn 




mov 


mj 


s 




Gil 


towc 


ComwuoASCH 


IndiO 


tied 


too 


JBtginittfCA bop 


icti02 


m 


h 






tn 


d.-10Q0 


.Thouttndi 


irafl2 


mvi 


aO 






m 


ti 






ctf 


lomc 






to 


hjdw 






m^ 


cJ 


■COMWI 




to 


d-100 


>i«id«di 


insu 


idtti 


b 




hcttOS 


mov 


am 


;Pvmtd ohtfipit 




€ii 


tHK 






onp 


m 






cm* 








u 


4-10 


,lifift 




m 


h 






*v 


« 






CM 


tMK 






im 


b 






ana 


m 


;&At0l on* GlWlQi 




mow 


aJ 


,0-i 




P^ 


hnd16 






r» 


ICHQIO 


.Foindont 




itf 


V 


« 




M 


« 






do 


h 


QoionMfOMf 




% 


&0 






mow 


at 






do 


h 


i 




Is 


dvferiMc 






cmpK 


rcM^ 






dor 


c 






tffft 


C4inn' 


,PTVf*ng 




rw 


mdu 






rf« 


lichtfl 






oM 


bdos 






r 


MMftd 


.StmQtound 




tit 




NodivVNtomS 




m 






lindie 


cp 


1 




* 
• 








* 










fnz 


ftnd12 




IchglO 


.DtoodvCwnQi 






fffVl 


cD'-i 






CM 


OSin 






to 


h.dubii 


KoyDiOOdlMtti 


IQ«1 


*v 


c 






m 


ftfVllO 






to 


d.a 






did 


d 




iniao 


$m 


tSApl 


.itMlWHMd 


hcriol? 


dcr 


• 






p 


toiii 






tfikJ 


mo 


;. - JO 




Odd 


i 






mov 


t.d 






Hd 








r* 


lcCltQt2 






oni 








tf«J 


mo 


;. oyitfmo 




did 


d 






mov 


d^ 






mvM 


ojm« 


^Om^nm 




mvi 


a0 






mov 


at 






rol 






NchQlf 


dci 


c 






cmi 






• 










Fi 


kdigZO 






mov 


a* 




KMia 


.M 








did 


d 






mm 


d 






flM 


cdooi 






f 


kcfvU 






dM 


d 






to 


d.btf 




I«^g20 


mov 


am 


OtCTtfftf mfcji 




m 


CO 






Cii 


txSDt 






m 








My 








mvi 


ai 




■ 










i« 








on 


t 




dtabit 


.KtyDwrodtlhtti 


■ 










001 








db 


h«p,0e.06,lib,l£ 04 DT 01 


biAn 


Prapm Ina tor omput 


# 










db 


00.{M^mnui.nijmbar.iniv.06,09.03 




iMid 


In* 


.CurrvriinaidMH 


IffffM 


^fliMono otfioni dNNMon 




db 


iaiO^ bgnol inoot X OOnKrol 




nd 


InM 


.Uwtxrflf ■Jdiiw 




rrw 


ataA 












fayiio 


mwM 


acout 


.teovt 




HOUr 


dt 




toiMi 


Koy 


PiQwChjngi'Eifai* ftM«l-3 


bi«l2 


ld» 
iK 


t» 








aor 






db 
db 


0,0000.0.00000000 0.0 
0.0O.0.O.O.0 00 0.0 




CDi 


SCtr 


.l^ip oonioi dw 


* 










db 


00.0 0.0 00,0 0.0 0000.0 




rnc 


tijiie 


,Noiont 


dmr 


Omf Svmn 




4 










Cpi 





.Cmrngtm^MT^ 




to 


ddr 




OpiWf 


db 


oJ/nolM' 




Ft 


bitf16 






mvi 


c.prvitf 




>diif 


db 


crJ.tadtoidinQrt^ 




epi 


f 


.Lnolittf? 




Grit 


bdo* 




1 






A 




Fx 


IM16 






M 






tfwl 


db 


lbn.3(fni0h.20h.il:h 53i ti3h.3ctU7li20hiM 




cp» 


ttbc 


OKkim 


1 








iMt 


db 


1 brv.3(ri.2(^.20h. 1 Dr).4Sh.0ih 1 




fm 


bJll5 


fkt 




ScanClZBKoyi 




Clop: 


db 


ibrt.3cnJ0h.20ri.ibrtS4n.0tft 1 


bdiU 


ITM 


m.' ' 


.EitMndub 




a 






(^Ul 


db 


ibnJ(»v37hJ0n.tQn.S4n.0tfi | 




m 


ti 






to 


hMUM 


.Kty pfiWiitfMnQi iMilt 


c*^ 


db 


litvOtft 






dcrv 


COtf« 






to 


b.OdcOOtt 


.KoymitiKdnvoitov 


tniic 


db 


'OOOOO 


Oih 




fm 


bUt14 






mw 


diOVt 


;. C04 l«yt oro 


• 










r 


bdliO 






ouip 


d 


^p ^^^^^V ^^^^^^^v^^^^tP 


piOQmd tqu 


1 


.Uiifl w gliCWiUm on OOut 


bJllS 


mvi 


m.T 


,Conv«ncor*QlcH« 




mvi 


d.OMh 


,Om«onofOtt 


* 










itt 


h 


. ,10 tHK) ctm 




mvi 


a3 


:. .^tvn 


iWf 


di 


2 


,FiiindidOlM 




ori 


4Cm 


;. tor (Millar 


iiKn2 


to 


bOdOflh 


.DrtMitor 


mbii 


A 


2 


.Unobdividdmi 


biJ16 


mov 


m^ 


«PiOnnvCnV 




oulp 


d 


;. CiSShayt 


mt 


di 


2 


.Citi«iim«adcMn 




«tt 


h 






to 


b.OdoOiA 


.16 rood n>* 


mo 


di 


2 


.CunwmofMniMr 




cp 


■ 


iiftttovd 


hKna 


•V 


t 


^nBBO M^n 


•oOn 


di 


2 


XatmofuntMr 




ff 




;, . .tfidiint 




P>^ 


h 


Aiiltd^ 


ipn0 


di 


2 


.iMorfivoi 




den 








inp 


h 


;. holpiiiongti0M«y1 


iVTIfW 


di 


2 


;1Moflmi 




fi 


txJIO 






CMp 


h 


:Dibotfct 


C*i9i 


di 


10 


;IX rogaMT ^«r«blM 




f 


biJ12 






fS 


h 




ctm> 


di 


2 


:Sovid«Kk 


■1 










kiOftfi 


,Cnocka0tn 




di 


las 


.PiooramMA 


tnd 


Mwm^ Input 8>wg fc^icaon 




cm* 




,Mll«1ltfpMI« 


Mm 


•Qu 


$ 






Of 


kKtn 


.^Mptfil 




mov 


hjf> 


^Prtv«}ui1«yi 












idi 


ttiii 


^ iwUp 




mov 


mj 


,ntw "tyi 


tMffn 


•qu 


9091 


:%(tHttoidiniri 




ora 


■ 


u. J«v« 




m 


b 


;» . jQiVMi dttnosi 


4 






1 




rm 


find 


fflMMd 




v« 


m 




ma 




< 

i 


























^^ 




^_ 










M 








M|rl««^^MM7,lM0t 


ViOWHW 


MBM 



That Guru Does Have A Message 

Betty Clay, Arlington, Texas 



Has anyone escaped the GURU? At some lenihly fmporrnnl 
point, you teethe requester box ihat h^\ s 

"SoftuMPa error - task held 
Cancel ALL drsK activity. 
Select CANCEL to retetfdebuQ/' 

When > au pre»« the button, the biack and red alert box appean 
with the Glim Medilation* menage: 

SOFTWARE FAILURE! PRESS LEFT MOUSE BUTTON 

TO CONTINUE" 

followed by a number of many digits, such it 
'030(KK)O7.0O0O57A3 or '83010009.00002463. For the avef^ 
age uacr, the onJy chokre is lo met the computer. The mei- 
Sifes teem lolally meaningless; sometimes they even appear 
to be a cruel iuke piayed on helpless users by the creators of the 
Amiga. Why? 

There truly is meaning in those guru meditations. We can all 
learn what most of them mean if we are provided with the 
neoesnry information. Serious programmers can attach a ler- 
minat to the Amiga with a null modem caWe, set their work- 
bench programs Jo delmg belore they kmd the program, and 
can work on their programs through the terminal without 
changing I he rt«te of the Amiga. They can use the ROMWACK 
debugger that exists on all KickStart disks, or the 
GRANDWACK debuffier that is part of the developers' pack- 
ifla. And I hey will pore over the ROM KERNAL MANUALS as 
they work. Those volumes are not written in what most dt us 
WDuU call English. t>ut they contain more informatton than 
some of us ever expected Commodore to rdeese to us, and it Is 
there that we find the explanations of the Guru Messages, tnore 
properly called Alerts,* 

It is net the purpose of this ifftide to explain how to debug 
programs using all of the needed equipment, lis purpose is to 
gwe some meaning to the alerts, and to Msurr the reader that 
there are programmers out there to whom thee inniigta are 
really useful. 

Rrst let's break the mei^iiagei IhId manageable pieces. Then 
we li ay to make sense of each piece. Take a (hypothetical) 
CUjm Metttge number like: 

#07060006 00008321 



Break it up fike this: 



07 06 0006. 



i.i.i.i ; 



121 



*O706UOOti.0O0O832l 



Tlie lirM part (U7) denotes the dcvke or library from which the 
error me^saiie came. There are twenty of these de\ ices, li- 
braries, etc , and lhe\ are listed in numerical order in the 
refererKe page that accompanies this article. If you look there, 
you will see that 07' indicates that the error occurred while 
using the DOS library. The icfu at the beginning indicates thai 
It wouW be possfWe to recover from this error, if we have the 
proper equipment and knowledge to do the debugging. For 
now. we must be content to know that if the beginning digit is 
Mfo. the error might be correctable: a ti^inning diijit * -f light 
or more indicates an error from which there is no hope of 
recovery. Thus, you might have a DOS library error that began 
with 07* (recoverable) or with 87' (hopcl^). These are hex* 
adedmal digits, so you might find A, B, C, D, or E in the left 
column. 

To put it a bit more technically, if the errof is irreversjWe, the 
high bit is set. (Fatal errors also cause the entire screen to go 
black, while recoverable ones only push the normal screen 
down a Nt.) 

'071M0OO6.0OOOS321 

Ttie wcond piece of inlormaiion (06) may be one of the six 
"general error codes," In this case, I chose I he '1/0 Error" 
because it seemed appropriate (or a disk error, though in teality 
it is more likely to occur in other libraries. The six general error 
codes are also listed in the reference page. The one you will 
encounter most often is 01', insufficient memory. If the general 
error is not anributable to one of these lix etudes, there should 
be two zeros in this field uf the error mess^e. 



*n~T 



07060006.00008321 

The four digits immedialety to the left of the dedmal point tell 
exactly what il was that went wrung. In our sample message, 
the digits are '0006\ and the reference chart will show that, in 
the DOS Librar>, a code of six indicates a disk block iei|iience 
error. 

You probably would not memorte these numbets. lor the 
same number will mean different things for different libraries/ 



IN 



ijpy fWJi 



^D 



devices. The refereiKe chart includes a Ust of these oxles as 
ih^ appear on Version 1 .0 of the WACK disk, a debugging disk 
that WM provided tor the devekipers. ConinKjdore is now 
offering this disk lor sale, tHJl the quoted price is $99 US, 
Remember that the Guru Meditations vvere Intended to help the 
developers, so the explanations of the codes may not be 
adequate (or those of us with less knowledge. Injt this informa^ 
tkHi from the execalem' file provides strong clues atxMji what 
is going wrong. To learn much more would require learning 
most of the ROM KRRNAL MANUAL 

'07060006 0000832 1 

The eight digits to ttie right ol the decimal point give the 
hexadecimal notation for the address of the task (program) that 
reported the error. Since the Amiga is a multitasking machine, 
alt software must be relocatable, and these (ocations may be 
dlSerenl each time you load the program. 

The codes in the chart have been broken into sections to make 
them niure readable than they are in Ihe Guru Meditations". 
You can see Ihe library/devk?e number in the first two digits; 
the general error code in the second pair of digits is always 
cHber QV (not enough memory) or 00' in these exatnpies, and 
an attempt has been made to give at least some meaning to the 
tour digit code at the end. Notice, abo, that few of these are 
called fatal errors. Most ol the errors in Ihe Exec. Graphics, and 
Intuition Ubfaries are falai> Most tXhers are not 

Here are a tiew examples: 



'81 



i.k.k 



81 

00 

0003 

.OUtiOA325 



I3.O0O0A325 

a fatal error in the txec Ubrax>' 
not one of ttie general errors 
an error in Ihe librarv' checksum 
of the task starting at location SA325 



^21000001.00001234 

2) - recoveratiie «ror in the Disk Resource 

00 - not a general error 
0001 - the unit already has a disk 
.00001 234 * the lask starts at location $ 1 234 



^S40 10005.00002345 

84 - fatal error in Intuition Library 
01 - caused by^ lack of memor>' 
OOOS * needed k> open a new window 
,00002343 * called by a task at location $2345 

To a skilled programmer, armed with literature and an intimate 
knuwMgeol the Amiga, this inlurmatton could ^vc hours. 

There is another type of error thai can bring a "Guru Medita- 
have all leroa except (or the last digit or two 



the decimal point. They are errors reported tiy the 6S000 
microprocessor itself. For example. 

Meditation * 00000002. xxxjooooDtx 

. . .would Indicate thai the microprocessor hid reoelvad an 
illegal instruction. F(h^ most of us. it is adequate to know that if 
the first six or seven digits are zeros, the error is irreversible, 
and It was reported by the 68000 mJ crDpt oc asi or. We can*t do 
anything atx>ut it, txit we can recognize it. 

For those at us wfio have yet to learn C and 68000 assembly, 
making the corrections must wait - but it b reassuring to know 
that we can look at the message and say to oundvet. '*Weli. 
Tve ruined my data and lost my program, but at least 1 know it 
was becatise the Graphics Libtary didn't have enough memor>' 
left to draw my text " That can be solved by adding more 
memory. As our knowledge grows, the other prot>lems wfll 
become correctable, too. 



Reference Chart Notes 

There are a very fev^ guru meditations th nnot be inter* 
preted using these tabli^ One was iqiorlfid recently by 
Claudio Nieder. a computer science student in Switzerland. He 
kept getting a guru meditation number 84000009.48454C50. 
Noticing that the address pan bore a strong resemblance lo 
ASCII code, he translated it: 



45 4C 50 
H E L 



Soon hie received a reply from Dal© Luck of Commodore- 
Amtga. It seoms that the Amiga mac, uaea the word HELP 
as a catchword. When Intuition finds the system to be in so 
bad a state that the error maaaage cannot even be die- 
piayed. IntuitHXi places the word HELP m location and 
then resets the system. As the aystem is brought back up. 
location is checked for the word HELP. arKj it tt is there, 
thm message is displayed. 

Carolyn Scheppner of Commodore Technical Support re^ 
cently elaborated on some of the guru messages that are 
made by the 68000 itseH. The two microprocessor codea 
^t appear most often are 00000003 and 00000004, Coda 
3 (Addreai error) may be cauaad when an invalid, no- 
longer-valid, or zero pointer s passed to a system routine, 
causing an attempt to do word or Jor>gword manipulations 
on an odd address. Code 4 (l e gal instructton) could be 
caused by poor coding, but il can also happen when 
m6rT>ory containing riecessar y code or vectors has bpen 
overwritten. 

K seems that some ol the exe&atarts can even be used to 
dtagnoae hardware problems The exampte given by Ms 
Scheppner warn 87000008 and 87000008. whch indcale 
''key already free ' and key out of range She says that 
these error codes coufd inclcaie problems with the key- 
tX)ardor with 



m 



M^tStr V«ym« riMM Oi 



•r 



REFERENCE CHART FOR GURU MESSAGES 



DEVICES, UBRAWES, AND RESOURCES: 



01 ExecUbraiy 

02 Graph fc^ Library 
<T1 LaycTs Ijbrary 

04 IfUuilion Ubriry 

05 MathUbrary 

06 CLisi Libraiy 

07 DOSUbrar\- 



Oft RAMUbraiy 

09 Icon Library 

10 AiidtoDevice 
U Cofiiole Ubrary 

12 GintPDrt Devtoe 

13 Keyboard Device 

14 TrackOiik Devke 



15 TifTwr Device 

20 GA Resource 

21 Disk Resource 

22 Mbc, Resoufire 

30 Bootstrap 

31 Workbench 



GENERAL ERROR CODES 

01 Insufficient memofy 

02 MakeLibrao Error 

03 OpenUbrary Fnor 
W Open Dc\ ice £rTor 

05 OpenKttsource Error 

06 I/O Error 



SPECinC ERROR CODES 



EjtcprVed 

BaieChkSum 

LibChkSum 

UbMem 

M^fnComipl 

JnTrMem 



CopDisplay 

Coplnstr 

CopUslOver 

Cop] bst Over 

CopListHead 

Long Frame 

ShortFrame 

noodHII 

TcxtTmpRas 

BJiBttMdp 



Gadgetiype 

GadgetTypc 

rroatePort 

ViemAlloc 

SubAlIoc 

PlaneAJIoc 

lTt;niBo«Top 

t)penScreen 

OpenScrnRasI 

S>sScmTVpe 

AddSWGadiiet 

Open Window 

BadSrale 

BadM* 



EXEC UBR AR Y: 1 00 0000 

81000001 Thetin trap vector htiincofTKt checksum. 

81000002 ExecBase has a checksum error 

81000003 Library' has a checksum error 

8 1 00 0004 Not enough memory to make Ittwary 

81 00 0005 Free memory list is corrupted 

81 00 0006 Not etK>ugh nieiiior>- for interrupt servers. 



GRAPHICS 

8201 UHM 
82 010002 
82000003 
82000004 
82 010005 
82010006 
8201 U007 
82 01 UU08 
02010009 
8201 OOOA 



LIBRARY: 02 00 0000 

No memory lor copper displd> list 
No memory lor copper instruction list 
0)T>nt>r list overbad {too kmg) 
Co, , iiitermedidle list too kmg 
No memory for copper list head 
Not efKHigh memory for l^ngRrame 
Not enough memory forShonFrune 
Not efXKJgh memory to RoodFill 
Not enough memofy to draw ten 
BltfiUMap. not enough memory 



LAYERS UBRARV: 03 00 0000 



INTUmON 

84 000001 
04 000001 
84 0100(Q 
S4 01 0003 
84010004 
84010005 
84 000006 
84010007 
84 010008 
84 000009 
84 01 OOOA 
84 01 OOOB 
84O0 00OC 
84 00 GOOD 



WeifdEcho 

NoConaote 



840000UE 
84 00 000F 



UBRARY:04 00 000U 
Unknown gadget type, fatal 
Recovery form of gadget type 
No memory to ctcttte port 
Item plane alkKHe. no memory 
Not enough memory lo suballocate 
Phne allocate, no memory 
Item box top < RelZem 
No memor>' to open a screen 
OpenScreen i raster altocate. no memi 
Open wy% screen, unknown type 
Add SW gadgets, no memory 
no mf mory to open %^ndow 
Bad State return entering interrupt 
Bad Memge nxetw^ by IDCMP(lnlui 
Direct CommunkatMm Hms^r Ports) 
Weird echo causing incompfehension 
Couldn't open the Console Devke 



Stan Mem 

EndTask 

QPktFail 

A^ncPkt 

FreeV«: 

DiibkBlkSeq 

BitMap 

KeyFree 

BadChkSum 

DbkEnor 

Key Range 

BidQverlay 



DOS LIBRARY; 07 00 0009 

07 01 0001 Too little memory' at startup. 

07000002 The task didni end» 

07 000003 QPkt failure (Queue message 

07000004 Unexpected padwt received 

0700 0005 FreeVecIailed 

07 000006 Error in disk block sequeiKe 

07000007 The bitmap is not valM 
07 00 0008 Key b already free 
07000009 The checksum is invalid 
0700000A Disk error 

07000008 The ke> IS out of range 
0700000C 



TRACKDISK DE\ ICE; 14 00 0000 
TDCallhSeekMOOUOOl Calibrale: seek error 
TDDelay 1 4 00 0002 Dcla> . error on timer watt 



RESOURCE: 21 000009 

DRHasDisk 21000001 get unit: aife^nJy has dbk 
DRIntNoAct 21000002 Imemjpr: no active unit 

WORKBENCH: 3! 00 0000 



CPU ERROR CODES: 

02 Bus Error 

03 Address Error 

04 Illegal instrutltofi 

05^ Diviskml^zero 

06 CHK instruct»n (result Ml outside designated 
bounds) 

07 l>ip overflow 

08 Privilege vblatkm 

09 Instruction trace 

OA Lme A Emulation - 68000 encountered an instruc- 
tion word with values between AOOO-AFFF 

OB Line F Emulation - 68000 encountered aj) mstrut- 
lion word wiih values beHveen POOO-FFFF 

TRAP instructkins • operating system call in^ructions 




« 







The Transactor Amiga Structure Browser 

by Chris Zamara and Nek Sullivan 



- Your guided tour through the aystem 



With this proyim and the information given in rhis article, you 
will gain knuwMge ahuui your Amigd Uial you yearned (or. but 
ooiildn't fold. This knfwtpdge will make you a beftpr pfORrammer. 
iltnoit cxflainly making you more proopenxis ttiuii yuu wmjld 
have been otherwise. 

With all of your extra money, you can txiy more expeh*>tve 
computer hardware aiMl advance youraetf even hirther, You will 
be luocarful. ^ thai suaxu will give you peiler self- 
confidence. Ptople will turn to you for advice and you will help out 
many others who would like to be as dev«r and sucoeiriul as 
yuurseii. By hdpuig th^e people^ not only will you gain deep 
personal fulfillment, but you will become quite popular and well- 
liked, which certainty canl hun your sex life. Since so many 
people will be looking up to you and following your advice, you 
will wield quite a bit of power in the computer community and in 
your busiiwss desHn^ in general. By leehng good about yourwll, 
you wilt fpftatnly get into better ph^-sical shape and wilf definitely 
live longer - maybe up to three hundred y«ifsl 

In short, reading this artide and typing in the program a! the end 
will give you knuwJctige. power, success and p tospgl ty . It will 
Improve your sex life and gtve you greater self esteem and a feeling 
of usefulness. You will be lUe to buy lots ol expensive computer 
hardware, and fast cars as well if you wish. You will lh« longer. But 
the choice is yours - read this article and make thc^e cfianges in 
your life, or skip past it and possibly never realize the enormous 
potential that ymi know is inside of you. 

Okay. mayt)e you won t get all o( ihxxe thir^ but. if you want to 
learn more about the Amiga's system Uruclures, or you'd like an 
ea;^ way to kxik at vital data about piii|rams while they eamHe. 
you1l make good use o( the Transactor Structure Browser. 

If you read our Amiga programming article in the last ^^e, you 
learned how important the various syHen structures are, since 
they are the key to finding out about all entities known to itie 
lystem. like ti^cs. screens, windows, gadi^ and the tike. Struc- 
tures in the Amiga are the equivalent of a memory map on a 
single-tasking machine, since there are no fuced memory kxia^ 
lions on the Am^ 

The ttructure has a direct C-language implementation, but we c^n 
speak of a structure ten^ilale (the definition of the stmcture) 
independently of a language. A structure is just the partKiilar way 
that some data are grouped. For example, a slructtue called X' 
might be defined as a word. fuUuwed by a pointer to another 
structure 'X\ fciOowed by a poftiter to a structure T. fdlowed by a 
long word. By knowing a structure's template and where in 



memor\' such a structure is stored, it is a simple matter for the 
s) btL-m 01 an application program to extract ib dala. 

What kind o( information can we find in various structures 
throughout the system's memory? Wellt aome interesting things 
are to be found, for example, in the Intuition-manned structures. 
With the program ptcsentitj tiere, you'll be able to look at Screen, 
Window, and Gadget structures, among others. Information about 
any program in the syMem can be Kaint'd by looking at these 
structures, since everybody's window^ screens and gadgets are 
maintained in a kind of network where they can be accessed via 
pointers from other Screen. U indow and Gadgt t structures. 

A pointer to the first Screen is alt that is needed to find eveiything 
eise, and that is found in the "liUuitionBase" structure, which, in 
turn, is found wlien the Intuition library is opened by a call to Itie 
OpeiLibraot ) (umHun. (OpeiiLbraryt ) is in the Exec library, a 
pointer to which is found in memory location 000004. the only 
fixed k)cation in the entire Am^ memory map. C-language 
stftnup code opens the Exec library,) All programs that use Intui- 
tion have Ihf^ir information in these itructufes. so through them 
you cm learn thin^ about abnoit any program currently running 
In the system. 

A screen strudure contains everything Intuition needs to know 
rixNit 1 screen, tike its size, title, number of hit-planes, a pointer to 
lliHiilmti,iigliill>iiliiiiiji 1 1 II kinduf soeen it ib. tia Luluursit*s 
rendered in. etc. Tfie screen structure points to a vnndow ^ructure 
for lUv fird window on the screen. A window structure has a 
pointer that can point to another window structure, so that all 
windows In a screen are linked together. If thcfe is more than one 
screen in the sy^tmk (unless you tiave an applKaiion running that 
opeiK its own screen, the only screen will be the WorkbefKh 
•creenK there will be a pointer in the first screen structure to the 
next saeen, any number of screens can be linked together in this 
wav. 

fn a window structure you1l find the usual sise and cokiur 
inforniatiun, ahang wuh an lOCKfP Flags variable describing wtial 
messages Intuition is getting from that window. A pointer to the 
first gadget in a linked li^ of gMtfels can also be found in the 
window struiture, A gwlgel structure tutally ck^ritM.'^ a gadget (a 
simple way to get input from ttie user through the mouse) - its 
position, size, type, imagery, etc The gadget structure is set up by 
an application before ttie structure is submitted to Intuition, so tile 
vahies within lepresent those that the programmer actually put 
into his code - in other words, a peek Inio a program's gntgN 
structure can give some insight into how a program was written. 



\ ih> 



] 



Other structures ol interest thai are not implefoented in Venion 
LOol Structure Browser: Menu. Image, Requester. View. ViewPM, 
Lam, fnterrupt. MemOiunk, \fsi?Port, Mange. Task, VSprite. 
AjiimOb (Many ol iheie tfnicturts, like Taik djid Jnlerrupt, mt 
diffknilt to monitor since the data within are coni^antly changing.) 

The key to finding the memory kication of any structure b the 
Library Baae tinidiMa. Every ihaied library TP^^Kslibrafy". 
* intmtiooiibrar> ", 'layer^iibrafy \ to name a tew) has a tibfaiy 
taae structure thai contains poimm to structures d Interest to 
routines in that library. As meniiofied*bow» the structures forma 
kind of network, since you can reach structures through pointers 

in ottettructures. In this nct%vork can be found nearly every item 
d data (bat the qfHon careaaii>lhing about: a diiecl link to the the 
lyMm's stale of mind at any jfiven moment ff we know ibe 
definiiitins tor the system structures {there are over a hundred of 
them altogether), we can snoop around and discover anything we 
i«sh to know about what the system knows And in the Amiga, (he 
system knows a kx. because appUcalion software has to go through 
the ^em for just about anything; it w^nts to do. 



The Slrvrttire Browser Progrmm 

The Structure Browser (SB from now on) makes it easy to siwop 
through many of the structure* in the syslon. You start with a hsr 
of liie library base arudures; in the current vision of the pro^ 
pam, only IntuitionBase is available. To display ttieeofiienlsof the 
litifdr> base structure, just move the pointer to the library base 
name on the screen and press the left mouse bunon. The library 
bue structure will immediately be displayed, showing each stnic- 
lure member's name (as defined in the standard Amiga header 
fil^aiid its dau type. In the case of the IniuitionBase structure, all 
members are either irupuiidni strudum in their own right, or else 
pointers lo such structures; to d^play any of these, fust click on Its 
name as usuaJ. This procesi can be repeated ^n in the new 
^uclure, to bring you lo other structures of inlerat. 

You can always grt lu the structure you came from by clicking on 
the "Previous Level" gadget at the bottom left of the window. You 
can Irace your steps as far back as you want, since the program 
wurks recursively (the number uf kveb dMp you are is displayed 
m the h»difq it the top of the window). Structures that contain 
more members than will fit on ihe window show ihe lirst 16 
members and display a gadget that says "(MORE)"- You can go to 
the next pige of structure members by clicking on (MORE), and go 
to the previoui page by clicking on the *T>wious Page" gadget. 



These daU types are standard in Ami^ code, because they are 
typedefs' that are set up in the header file 'exec/types.h \ The 
bask types are: 



By going frurn structure to structure in this manner, tl it msy to 
view inform^kx) about programs that would bediffiailt lofind out 
otherwise. For example - what kind of gadgets are being used in 
that neai commercial program? Are they gadgA at all? Dkl the 
programmer use a rerniaHer or a window for that prompf Just by 
mousing around wiih 56. you can find it all out! 

The data type lor each structure member is shown in the same way 
that the members are declared in the C header fite (ihe appiopri* 
ale heeler fife must be compiled - using the 'include statement - 
With any C program that wants to r^r to a s>stt'in strudure). 



BYTE 

UBYTE 

SHORT 

USHORT 

LOt^G 

ULONG 



signed 8-bit value (cha^ 

unsigned 8-bit value (unsigned char) 

signed t6-bit value (short) 

unsigned 1&-bit value (unsigned short) 

signed 32-bit value (long) 

un^gned 32-btt value (unsigned long) 



Pointers to any of the above are denoted as in stanUdrd C syntax, 
with an atterisk l*\. For example, a pointer to a SHORT %vould be 
denoted by SHORT * in the type field Siructure menibers that are 
pointers to other strudures also use the C syntax: a pointer lo a 
•Window" structure, tor instance, is denoted by 'struct Window < 
A structure member that is an actual structure, not a pointer to a 
structure, has no asterisk: S8 does not dfsplay an addres tor such a 
meniber, since it is conttioed within the structure being viewed, 
ivhoie addre» is already stiown. 

Structure menil)ers that represent not poinlen lo other structure, 
but actual dau that may be of interetf, are displayed in various 
ways depending on their nature. These data can be simple num- 
bers, like those giving a window s LeftEdge, TopEdge, Widlh and 
Height The item of interest might be a byle. word or tongword 

com .1 1 m ng flags of lorne son, like the lags indicatirq a window or 
goUget i>pe. Or Ihe data you're concerned with mif^ M be mi 
area of memory that contains a table of tome sort or describes a 
graphic image. 

Simple data values, like LeftEdge, etc. are shown in black on the 
SB window Such structure members cannot be used to bring up 
any further information by pointing on them and clicking - 
nothing will happen if you do so. They are fust what they appear to 
be: a number for you to see The values in black are often lust what 
you want to hnd out after getting to a Mrudure ol interest. Wfien 
one of these values is used for containing flags of some sort, jt is 
treated differently: you can click on it lo get a list of what fl^l are 
set. An example might be a 'smart irfresh^^ window with siring, 
ctose and drag syMm gadgeta. The "R^" member of such a 
window s Mrocture, when selected, would show: 

WINDOWDRAG WTNDOWSIZING 
WINDOWCLOSE SMARTJEFRESH 

(Like the member names, the flag names are those defined in the 
^andard header files used for C or a»embler program develops 
mem.) 

Another farm of spedaltmJ output in SB is the hex dump. When a 
structure member is an anay of values or a pointer to an area of 
memory like a bit-plam* or image data, clicking on Uh? merutjcr 
nvne cauea a hex dump ol the d<ila to be displayed* U the data 
type b specified in the stnictufp template, the data ^at is taken 
inio account in (he hex dump - the hex values are aboWQ at cMltt 
bytes, words, or long words. 



iioy iPPi 



?. 



J 



A Sftnrple To«r 

On paper, the process may sound rather involved, but using SB is 4 
bftcK* Hoe s an example of how you could And out the type of 
gadget used by i progrdtn thai is currently running in the ^fMem. 
Let's use as an example the Structure Browser program itself - well 
lake a look at the structure for the program's "Previous Level" 

Pli*, we haw to run SB Thai s not hard: type 'sb* from the CIJ (or 
'run sb' if you want to keep the CU available for launching other 
tesks while SB IS running) SB will bring up a window that is the lull 
width of the acreen, but isn't lull height, leaving a bit ol the 
WorkBench scr^n visible at the lop On the window you will be 
prompted to select a library struc(ure. Since only one dioke is 
available in this versbn ol the program, the decision isn't dtfficuU: 
select lntuitK)n" tiy pointing with the mouse and clicking the left 
button. After dickmg. a list o( the IntuiUonBase" structure mem- 
bers will be displayed, with their types and value^ <hoM n on the 
right. All memtK'fs ate either whole embedded structures or else 
structure pointers. The top t%vo are paienthestzed. meaning that 
Uioie structure types are not available in this version of the 
prt^ram. To keep the maptine listing reasonably short, we only 
implemented a few key structure types; refcimw to data types 
not handed by the browser are pawmheiiyr d. and clicking on 
ttiem has no effect. 



Now. on with our tmveli lo the gadget strudure of intefCit. Since 
the pio^m we're interested in has a window on the Workbench 
screen, we mu^ gi^t to that screen's tiructure first. We can get there 
by clicking on the "AcliveScreen" memt)er in the IntuitionBase 
structure, sinoe the adtve scteen - the one %ve>e currently work* 
ing on - IS the WorkBench screen. One click, and up comia tht 
first page d the structure members in the Workbench screen 
structure You can tell you've got the right screen by looking at the 
member called ^Title**; to the right it should say *^orkbench 
Screen". To see more screen members, you can dick on the 
IMOKE) pdbet that has appeared at the buttuin of the wmdow, 
and then click on "Pre\'ious Page"* to gel back. The second 
member of the screen structure is called *'RrstWindow", and it 
points to the flrtf window structure in a linked list containing all 
wirulows on the screen. 

QhtIc on "Rr^Window" and a window structure %vill be displayed. 
More than likely, this is the window we're looking lor, the window 
belonging to SB itself. The *Tjtle ' member will tell you what 
window you're looking at since it will say exactly what is on the 
title bar of the corre&pondjng window, tl tin! window isn*t the one 
you're looking lor. you can get to the next window structure in the 
Uti by clicking on the flr^t member of the structure, the one called 
'*^textWindow^ The structure for the next window will tlien be 
di*^played * you can keep chaining through alt the windows in the 
screen in this way. Stop when you get to the Structure Browser 
window (check "Title'1. You'll also notice other items of interest in 
the structure, like the window s dimensions and the flai^ set for 
the window. Try dkking on the ''Rags" member to show the 
window flags. Even if you're not familiar with Intuition program- 
ming« ttie names ol tlie flags should biggest their pur pcM. 



Now that weVe found the windon- structure we want, let's look for 
a pointer to the gadget tin attached to the winckiw. There's nothing 
liite that on the first page, so dick Ihe IMQREV gadget to see more 
window members. About half way down is the member 
"FintGadget^ whch polnii toa gwigel strudure (its type is struct 
Gadget ■'. meaning a pointer to a Gadget structure)i Cick there, 
and up comes the first in a linked list of gadget stnxlures (or th^ 
window. By looking at the UttEdge and TopEdge variables, you 
can see the poaiiiDn of ttie gadget on the icieen To go to the next 
ficid^'t striJ(1Ufe in the list, just click on the (irsl member, Nex- 
tLuujfci \ You can chain through the program's entire gadget list 
this way, stopping when you wish to examine the flag variables 
"Rags, "Activation", or "GadgetType". GadgetT>i)e will tell you il 
tbt gKlget is a BOOLQADGET (boolean), PROPGADGET (propor* 
tkmal). or STRGADGET (string). 

Eventually, we gel to a gadget with its TopEdge at *t2, and iH 
LeftEdge at 10. Since the GRELBUTTOM flag is set in the Fl^ 
vanahle. we know the TopEdge value indicates that the tc^adgeof 
the gadget is 12 ptnls above ttie window s bottom border. That's 
the "pre\'ious level'' gadget thai we're looking for. We can examine 
the Gadget structure to see exactly how that gadget was set up in 
the Structure Bruwser propML (Using the same iirtagery aa 
someone else's gadget in your programs might be omsidered a 
violation of copyright, but the current version of SB doesn> 
support Image structures anyway so ttiere*ll be no "Don't try this at 
home, kids*'' warning here.) 

Structure Browicr doesn't support all the system structures as it 
stands now - there are fust too many und the prt^ram would fill 
the entire magazine. Rather, we liave put in some of the more 
interesting Intuituin structures and we plan on adding more for 
version 2.0 of SB, which will be found on The Tranaador s first 
Amiga disk, and will be ^ipbirtH to CompuServe's AmigaForum. 
The program is designed so that it is easy to add new structures as 
you wish - if you have access to the "include" files for devek)p- 
ment (or the listings of them in the ROM Kernal manual), it should 
be easy lor you to add whate>'er structures you're interested in lo 
the program Information aboiM doing this is given later in the 
article. SB is public domain, so you're free to use and m(xlif>' it as 
you wish: if you do add new structures, though* please use the 
Handard Amiga member name\ and types eaactly as they appear 
in the include IBiSL We plan to see how far the SB concept of 
qpHem structure broH-stng can be taken - a few ideas for enhance 
ments are given later in this article. 



ApplicflHoiu for SB 

By now you've prDt>dbly mxmi that SB is a groal tool for learning 
about the Amiga's internal data structures. But ttiere are actually 
quite a few good reaaons lo haw SB around on vtxir moH-used 
disk - maybe even in the C dtoedory of your usual Workbencti or 
development disk. 

For one thing. SB makes a very handy t efc ren ce to Ibe structure 
templates themselves. It's eaiicr to bring up SB and click lo a 
structure than lo look up th^ ^ructure defWHon in the ROM 
Kemal manual. And if vou don't hav^ the manual. tt*s easier than 



I Ihe 



#4 



WlBy ^PB^ 



oa 



■p 



looking through lots oT induck files If you don't hweth^ inrludr 
files, its the only way! 

SB can also be used as a debuggtr^ tool: if your program is acting 
strangely, you CAn peek at Intuition s vjew d your windows. 
pvlgets, etc., to make mn they are property sel up and linked 

'igether the way you intended You can look al these things at any 
time during your pfogram's execution to see whai happens when 
certain actions are taken: kind of like a trace, but only pertaining to 
the program's interaction mth the operant^ 



Another benefit of SB is thai you can use if to team programming 
techniques by looking at how other applications have iH up their 
structures to achieve certain effects. By investigating the structures 
of known qrMem enf itios^ you can see what effect certain flip and 
variables have on their behaviour. 11 you're curious about the 
tricks that some ptogram is using, fust take a browse through its 
gM^ets and windows. For instance, did you know that Workbench 
uses a borderless, backdrop window that im on the Workbench 
screen just below the fcraen ttte? We didn't either, until we used 
SB to ltx>k al the Workbench window structure. You can get khm 
good ideas from other people's use of Intuition's resources. 



Future VersloM of SB 

Our main goal for SB is to eventually have it encompass nearly ill 
lystem timdures and Hap. The program can be expected to grow 
in sixe considerably, but it will be worth ix for a total map of ttte 
fern's inner thoughb. But besides expanding in scope, there 
could abo be more flexibility in the ways that lowest-levei data 
t>pes are di^jiayed. For enampie, graphic data could be display 
not as a hex-dump, but m the actuaJ image that it defines. Some 
values, like the mouse's X and Y coordinates thai aru found in a 
^Mndow structure, OMild be updated frequently to give current 
readings. The hex dump Aouid also display ASGI equivalents o( 
the b>i«. Perhaps a less immediately-im|4emented feature will 
be the saving of image and BitMap data to disk as IFF-formaf files. 
There should be a way to save any structure and its current values 
10 a file tt wrdl. perhaps as C or aaaembler code lor easy inclusk>n 
in your own programs. If anyone has any |ood IdeM. let us know. 
Or better yet, implement tt>em - we don't want all the glur>' (or 
oursehres! (read: we dont want to do all the work ourselves?) 



Program listing Notes 

The C toufce for SB is broken m to seveni files, each with its own 
purpose The mainline and general functions«e in the file ' sb.c", 
TTie Intuition calls and all functions dealing with the programs 
laer intertace is in the file "sbio.c". The other files contain the 
individual routines to handle different stnjcture types, "sbwin- 
ckiw c . "sbscreenc". and "sbgac^rtx" contain llie functions thai 
handle the structures their names suggest, "sbgfx.c" handles the 
graphics librar> -related structures. RastPon and BjtMap. In addi- 
tion, a header file, sb,h", contains various 'drtne statements and 
a tfructuie definition - il dmikt be stored in a subdirectory called 
header". All of these separate files can be compiled with Nfanx 
Aztec C using make" and the makefile provided. The makefile 



takes advantage o* Manxs pren^ompiled header filr rd[^a[>ility to 
speed up compiation by not having to re^<onipile inluition.h" in 
each d the six source files. If you are using this method, ytw ^n 
delete the 'include at the lop of each source OleMindkaled in the 
comment. For users of Lanice C, |ust compile all six files and link 
them normally - don1 worry about the makefile 

Since a requirement o* this program was that it didn't use up loo 
many valuable magazine pages, %tfe had to make a few compro- 
miles in the style department. For one thing, the program has far 

too few comments - we hope to clear up mai n poinli t«garding the 
programs operation in this ailide There mt alio very few blank 
tines that might have made the program easier to look at Functkm 
parameter declarations are put on a single line, and on the same 
lineasthefiincttondedantion itsetl. If possible. The code isn't too 
unreadable, though, and the disk/Cbmpuserve venion of SB 
(V2 0) will be much prettier* 

When entering the program, take extra care in emeving the the 
'itTuddHa' anaj^ in each Mructure print function The first charac- 
ter d each member name is either a space, minus, or left parentbe^ 
sis; it is important to use the correct one Also, if you use the wrong 
diia size constant (like putting in INTSIZE where it shouki be 
PTRSI2E). you will get bad results wtien you try to display that 
struriure, or worse yet, a software error. 



Program >folei 

SB is quite useful as it ^ancb, but you may want to modifv- it lo 
incorporate some other structurei th^ youre mteroted in. If you 
do, here is some eicp1anatk>n of the pn:»gram to help you out. The 
are up to you . have a ball, hackers! 



The principle behind SB is very simple A specialized function 
odsts (or each kind of structure, if a stmcture contains more 
members than will fit on one page, there is a hmction for each 
subiequent page The function is passed a pointer to the structure 
(andandbet, in thecaseof multiple-page structure), and it prints 
the structure's members, types and values, then waits for input 
(The actual output and input is handled by functions in "sbiox" 
but moie on that later.) Dqiending on the member selected by the 
user, an appropriate routine is called to print that structure's 
members and again wait for input. It may be tliat a routine calls 
Ibeir, as when chaining through a linked list of like structures. 

In any case, each aelectkin brings the pnjgram one level of nesting 
deeper, and the only %w to go up a levd Isby Ihe user clicking the 
"Previous Level" or -Previous P^ ' pjget, causing the return 
from a function. (Since each extra levd you visit represents an 
extra level of function call nesting, v-ou face a theoreticaJ possibility 
of slack overfiow if you go loo deep. Even with the system delauii 
stack of 4000 bytes, though, we estimateyou'd have to go well over 
too levels deep before there was any danger of this happemng.) 

Besides functions that handle spedfic «ruc!ures. there are the 
more general output (unctions that display hex dumps or flagi • 
these are in the file "sbx". The hmctkni used lo tell the output 
hwdOJiln "sNox" what tn display is called pul( ). and is also in 



**d>.c" - il ii cilkd by all the stmclure output functkms and is 
paaedapointer lotbennjctureand a poinrer to an array of !if)ecia] 
"StnidOata'' simnures Siting up ihi^ drray i& the key lo adding 
more structures to SB's repertoire. 



SMOciated ^dgel lo the gad^ list. After the kx)p. the "{MOREr 
gwl|et (MoreGadg) is mUU^I \i there aie more than 16 structure 
members to disptajr. Finally, a call to the Intuition function Re- 
f«hGadget3( } dbptays the gadget text on the window. 



A StructDala** structure is delined in the file ' sb,h" seen in the 
li^nt( It contains information that SB nefds to know about a 
structure member: its name, type, print ofXum. diid size. The 
name arnJ type are fusl pointers to strings for display. The print 
type is needed so that pul( ) kno^^ how to ^inl Ihe member's 
value -•! t byle. dwrt or long, s^ned or unsigned, or as a Mrifig 
or pointer. See the put( ) hinctlon to see tiow the print codes are 
interpreted. The other member ol a struct StructData, the data siiDe, 
indK:atc's the number ol b>1cs used by ttie structure member. The 
cxmstantt BYTESIZE, INTSEE, and PTRSTZE are drfined in "sb h" 
to specify the common riKS !. 2, and 4. When the member is a 
tfrudure (not a pointer to a structure, but an iiistarKre ol the 
structure itself), use the SZ macro defined in "sb.h ' to calculate the 
ol the structure, e^. SZ(View} instead ol sizeoli^ruct View). 



By Ux^king H the hinctions PrWjmi.M ). PrScreen( ). and 
PrGadgeti ) as ejcamples. you should have no ditficully adding the 
hinctions to display s>'5tem structures o( interest to vou. If you add 
a new structure, you il have to allow the user to select it from 
atiother structure by removiiig the parentheses from around the 
member name and t\'pe An opening parenthe^ at the flirt of a 
nk'niber nanK* inileid of a ^pace prevents thai member frum 
being selected by the user (doesn't make it a gMt|el). iusi remove 
these parenthCMS from all functions whose ^ructure contains a 
puiater to your newly-implemented structure, and add a caJi to 
your new function In the SWtTCH itTjtmtnt ^ain. refer to the 
functions menlioned above for cldnfiLalioo. 

In the print function tor any new tfnictiire you*ve added to the 
program, set up a flUk 'structdata' array of StructDaia btructuro 
(try saying that three times quickly!) as in the other functionsL 
Members* names stiould begin with a space fur fla^, arrays, or 
pointers to structures thai SB can handie (i.e. anything for which a 
print function exists), a minus (-) for simple diita elemeni^ ihat will 
be rendered in black and will not be selectable t)y the user, nr a 
parenthesis for poinfen to structures thai are not supported by the 
program. 



The output o( members to the window* arwl the input of a 
from the user is handled by the same hinction, GetChoiocf ). 
Selectable structure members are implemented as Intuition gad- 
gels that have no renderii^ other than the wsodaledlntuiTejLt. An 
arr^of l6]iituiTeit ^ruciunslsseluptocoritajn ttietext lor each 
line printed to the window. An array of 16 boolean gat^ets. each 
pointing to a different IntuiTexl structure, is also declared. Gadget 
flructures also extst lor the Previous Level" and ' (MORE)" gad- 
gets that appear on Ihe window. 

When GetCho4cc( ) is called, it calls f%edisplay( ) to put up the 
flrudure member names and build the required list of gadgets. 
Rcdisplay( } first removes all eibting gadgets except the Um in the 
gadget list, the "Previous Ijevel" gadget (BackGadg). Depending on 
the number of sttutlure members to be displayed, up to 1 6 [^;l^v ^ 
through a loop are made to either pnnt an IntuiText or add the 



After Redisplayf ) ha^ done it job, Getaioice( \ waits for an lOCMP 
(Intuition Direct Communication Mfinaur Port) event, which will 
Mgnity that Ihe user has selected a gadget, II the window dose 
gadget was selected. GoseOul( ) is called to close up libraries and 
the open windov^'. then call exit( ] to fix up the stack and return to 
CU. If another pdget was setodeci the gadget s ID is returned to 
the caller o( Getaioice( ^ The IDs of the structure member gadgets 
are their ordinal valuer - 1 lor the first and so on. The "Previous 
Lever gadget has an ID of 0. and the (MORE)" gadget's ID is the 
constant MORECxADG. defined as 25 in 'A.W\ 



To SB 2.0. . , And Beyondf 

As you've read< SB can be expected lo expand weW beyond Its 
current capabjliiies. If anyone adds new structures, fl^, or lea* 
tures loSB, we would be happy to incorporate the changes in the 
laIcA version for wide public-domain distribution. We wHI piiy 
keeper of thesouice' and attempt to coordinate all improvements 
to maintain tlie latest, greatest SB that will be uploaded to Cbmpi^ 
serve and other services, and included on our public-domain 
Amiga disks iprobably available next issii^ 

K1e.kri while, have fun picking Intuition's brains with SB l.O, and 
we 11 see you next issue! 



*9**M«**t**«*4««4 fllft 



/•to.h" 



ftncli^ <1ntult*«Fv/1nty1Han.h> 

rfin« ^TtllZI allMf fA^ttl 

'fin* lUTtm «l|«*4 i\m} 

Pfin* litcttn «U«af Cdhtrl 

rflAv MUUDC U 

wmiifm NVEGAK IS /* 10 #f f^mn^ w%h v 



■truct ftriAtSM* (c«t*r 




M«H 



>■■>* * ■■■■■»#» §l\^ agk *• 



Tit* f 



«r ttPucrtm mrmmmr CMI Vt.« 



tr tia lulltMn am Sirlft Ihm^ umi} Ccl tfSS 
1(1 Miwr ttrvctirw. r*M tttrt fr«» Intuillt 



intuit 1 






. Kravw iHtPwt, lltMn^, 



Uutt 1» tMr«i^ Intuit 1«i, cMrttfit w itmctir« 
nsBB to 4it^*r tf«f* m 9 mm Mructur*, 



Till PtOGUM HAT It FVIILT OlITttft/TEO 



•/ 



/* Inclitft not mtm^ f«r Ati«e C lalnf pr*vl«Bd 

MHIn* riAcriiiOf 4 

•iltm itrmt l^T ['t*[i^iii *T TjTTTiram, 

t&t«rn attict IntulTAfti OtoiHTtatu^ aKtHMt; 

«Ptl UptTLibraer O; 

inc l«vtl ■ S; /* eirr«Ac inal of nMiir^ •/ 

■laHc c*«r ttsiMnn [IVJIMS * IIEMIl 



M«V 



ttwffC»; /* ^«n Intutttan librv> 4 al 
III* <rtwl«*) < 

iKtn«t.lYMt * fUiTTt *9" Quit Fr<«r^ "I 



CI 









V 



•tfuel LlV>rv>| 



•trMt(t*>titfintipil«g, Mif>; 



ri 



, rntutti 






.. 11^ 



>: 



iU 



ULOK flifi; 
Iflf I, lint, fitl* • nMnOM; 



PtinCultM* Utrlm, I 

c 



Htrlni; itnct tncwftl 



f •in 

i ■ Act iv«tc rMn", 

I; 



■vtrtct VlndM ••» I, rtnin >, 

■itnct Icrwn **« I, ^fWtlli |. 

■strurt IcrMn --^ 1, HMltt | 



If 



111! {c«Hln> t 
mm* »«tOptt«nlMtrttrln», Mfvtdati. t4PfR)ltMt. l«TUlli» •); 
«riUII fl^lu • tetDi«U«(MTJUl2tn c 






4i 
^rl*rt#f*<*TH» njrr«Atly Aetlw per 






>J > 



Oi«U«T«itttl.lt««t ■ (MiTTI *)t«MltfM[il; 

If <lfta«t t fU «4 111 U r^nrUl < 

It (h f1«t«»> C 

AilMftiULtntJ.naiit ■ itmni *|l«ittlVMtl4A*lt 

III 

f1«lt 

> 

If Cf1#t* * rUfifJiLMi 

Cli»lc«tMt[Hni].ir«at • fUfTTt *>iutUnMrt In*]; 
tfkll* (totOwlctfUn* « 111 



rUWfiiLM; 



It 



^rtcrMn<"tM« tint KrHn vt IniMlikvt^ft lt»t". 



1 



•Pirtttcr 



>; 



; l(W vfftatj 



l"l 



put liptlvi, ttuft. taM, vffHtl 

»«< «^1«t; ttn^t tiructtftia *»twtt; cKvr 
r«tlit«r t«ht Inj*; 

IM 1; 

9rlnif(t»tllAH[a^l«rt}, -K iMt 14b-. 

■ttfff- i^ l i ^ iB, ttu4f j^^ttrti 
•iffftc^ litifff-t^lnttv^) < 

*•" 0: i* *n*t »r1nt virt«ilf« 



>; 



Cfttrini, ai ^m , ttfilt. Mi*} 
<Mr '•A*rt«s, ■■trtfif; (nt tftU; tant til*; 

tat Urn ■ «, c| 

•«t|f«»t,lt«Kl ■ [Uim *!■ Ult Mm D^^ ■! 
If (lU* — -f| 
fti|« * OftTMIfl 

iprintfCbuf, -U fr«B tU (Eltf)% 

■irinf, I i l l 1 1 1. a^Orttilj 
pwr»*ad»rtbb«, ttJtllj 
If (Una » nuMMl 

lint • 0; 
1*1 1* (Hnc 4 llutUlK U lU* » 0} 1 

i*al1fw<««iPw«« tfilt. Iln»», •If*); 

•It* -■ 1(; 

rt»ill «• U; 
> 

« ■ ■ttOMlttit^t* » T WUUISi « 1 t U«*}| 
> <#1t* (tit* » U C •■ WKUM>; 



Irwi ■ *flant *Hb*** • aff**!); 



«^ '» , . /• prim m m 

•^IntfCfaut, *>tU- 110^, tnff, ln«}J 



**•* It 

imm ■ *ih*** * •ff»*t>; 



1 



/* print * brt* 



/• p^Jm » itriMp 



if (Klfajp • *U«« •}(! 
lpi-1fvtf(towf« *«JU*|f 
•It* f 

Ht i\ m%i i € 30 U *(Cc»i*r 'Xiw • (|; |«*| 
ivftt • t| • •iCAar 'MfUi • ij; 

H (*((c«i#r •)!»« « II) 
«lrc*t1but, •..••); 

• *" /• print * p*int«r 

If flllfUi - -nant *HtaM * pffMU II 
•printfciMf, ««JiL-|j 

*lH 

•prlMf<«Mf, ■ 



*/ 
•/ 

•/ 

•/ 



i*«4.ln* tam<&mt iftit, Una, ■it*} 

HPTTI •*iHrnt; lM tmit^ I in*; Itf^ til*| 

U»m I, I; 

■tatu c*i*r iwiujiiitO • ^tZ34S4lllMGKf*; 
iprfntMt«AtUnHlMn*|, -IPlit *, *<i»>ttl. 
fftr CI • 0; I « ■lM(*fi«, 1«|; I *• inltl { 
**lTcfti (mil) I 

irrttiift 

J • «C*Mr«*« * II; 

■prfAtfiiuf, noc ■. HM^igitu / m^ 



\ 



* iPfttlti 
tprfmffbuf, 

•fa 

PTtflZlt 
iprlncfC^if, 




•trc*tCt«Mlln**tMn«|, buflf 
OhsiHfut[Mn«] JT*it • CMiTTI *)i*iitllnM(tln*]j 



7 



J 



tu 1191^, \fam, ifuki; 



Hi /• prim a u 

l«»* •tt«nt "Xk*** • •ff**i>; 
iprtmf(bM«, -«»lii llOitf", iru, ir«*|- 



•/ 



iprlntfcbvf, 
I 



/* print an fnt 
* ffffHtl; 



lanTvit cii*^*n, tfit*, tfrjact, •1i«. pffiM} 
IrtHt; 
»iruct ItruftPau *«ki«| 

I 

tm l« Mai; 
UttaciTaiti *ff**t t 1 i • )| 
put Pta ^rCN^lMH, ^J«ci}; 

tor n » h* ■ D^ I 4 tf tt; i^l C 

putCl. UitalOi <^JKI, mm * Bff«*t); 
mm** d»t*£0.ditHtt*; 

rvtgm Caw * af f««t1| 



«7 



J 



c 



PrttrlA* flMrilfli, itrtfmy 



nm^fm* •«f<nii 









>* * * ** flit >^||HV*C* ■■■■ f ■ !*« * * *■ ■— ■pa^jffpt u 



mttirm OOlCtWlDTN IM 

M»f In* VACIN« * 

•ivfini PurmifltaBf. *, r> C ••^•(pp, flv«U. Ila^^yl; \ 

•irut lnfuttt«r«*M 'irrtii'itlirtin • nuU; 
•fruct tfitcH *Cfkft««4 « MAI; 



♦ 11; 
• 111 



1m L*«*L; 
•tryct 



itruci iMwtTMt i«an«t « { 
*. I. 

lUiTTI •|"{NOl|}*, 
10, II, U*, 11, 



I; 

«iruct tt«di«t 



I. 



)j 



■ i 



,, 11, »». II, 

HlVEiJllr, 
■QQiWMIt. 

WU, WtL, 



• C 



t CVOIfVll 

VlKNlhBCrTft 

Wl«« 

mmamuM 

ACtlMtt 
KKlUiCrRCiH 



-1 >t 



/■ ua* tcTMR evil 



V 



/• »l 



III 



l. 



/• tint 
tar ttruetMP* 



V 1.0*. 



0. 0, 0, 0« /* aliiit Halt* fnan-raattatoia} ■/ 



)I 



O 
{ 
Ifil It 

aka1«*T*«t|l].BMlMn ■ 0; 

CtaU«T«iitn].frr*«a«> - 44111; 

QMtc*UivtUA«ftld«a > 0] 

QiaUaTaMtn.Ti^^i • •> 

Qlale«f*itin.n«atrapt • «JLI; 

tlwU«l«>ttU.lt»mt * M,L; 

Qioit«T«ii(n.B«iitT«it • hull; 

CfciHrtiiini .i*ttltt|a « 10; 

Cka1e«tod|lll.T«fE««i > t • IMCIi* • 1 

Qialcatod|ti)*»»t^t - CMOlCtMlvn; 

miiillrfiPl '"r " GAMMOP^; 



1c 



hi. 
Ell. 



t fM 



tTait 



ACfifl1»T«mt11J; 
1*1;/* fa^at 



iBt tiafi »i 1 */ 



•atChaiea ( 

i 

•truct iRtulMMaap* ^tetNaiCn 
WOK ««clM«; /* wftufa cl«M fm t 

*Pn lAMr; /• pfttntar t« pa^t fra I 

l*d<M>l»f(r«*); /* pit t4» ctioicaa In alniM •/ 
fonvia C /-*" Mfn awvt lev *«/ 

Uall Cli 4< MitpWlntfM-H>HrP«rt->^ lltflfO; 
i*iia {^aaaia • » ■ W H l Walfi^lw^aw- Kiaa^^art ) I i 






/* fit i^hat 



/* cHact far 

H immi 




laaa « MMat*'^(aflB; 

); f raply to ^iii^i rf^t 
t aalactari v 

rvtum ( tl»|ruct CadKt "Tlnilt-I na<mTO >i 
/* fintih 4» If l«« cl«M ta^t It «MUa« V 
•IM If {B«etaM *■ cimtvimon 

CI«mOuI(); ^ ciMn 49 «« ^U */ 



% 



putiifl«lar(ttr1ni, p>tr> ciiar *atPlnt; 0^ mn 
r put tltli antf pplrttar at tap af acravi - 
* H per la WU, put atrlm anly. 

4 

«tor ivfOeif 
MtiHf4P», til; 

ftaetrilMr*^ lL, Wi, imt1Hilwln«M >«tdTli |9, nit; 
Mi*^«n<r^, 1l>; 
H (ptr) ( 

aprlntfCiwr, -Ut te {adtfrtM tSla)i% Iwal, atrlm, ptri; 
PUTTtXtC 

*A«*v- Tvpa ¥aiyt (lM«/iKlail)*, 

ISi, m • t * Pp »TKMl^t)j 

•la* 

■prtmtfiuf, n#t lai*, la¥aU itr(f<il; 
>VTtUT|bwf. Ml, lOl * rf-^TAH«(tftU; 
} 

tuff fl 



/• van IfttwfTlvi i tf««^Ua HBrariaa w< vli 
If |l{Intultt»«Ma • Catruct intiHttaMaaa *1 

^vttfbrarr CliHultlanaiPrar^, Oil I I 
Cla a aOmfif 

If (M«tJiAaM • (Mryci Gftlat* 'K^aniHrary f ira^lca.Htrary. 9i| || 
eia»«CMi]; 

/* f>aH atiavt <• ipan tfca aaln aln^v */ 
If iMMaliwifitfM • ^w^r^aMbWli^avj) } 

ClaaaOvtOj 
rp • naff«ilfi*ii^ta«'t: /* raaipart far frafitlca rautlvt V 



CI 
C 



r> 



/• claa* avarythlfv i# kaf«r« aniiH «/ 

If imtiWlniMil Ctaaawlf^MKitatiwlftfM); 

U Up»tuiiift«aaa} CtaaailtorarTMntu»tl««aa«|j 

If IfifAlaaa} Claaailtor«rY{Cf«t«««); 

«i1t<0»; /* aiU pratraa • «• w to *«»lr raata4 */ 




attf padtoati. 



■««tifflav( 

/* claar v1 

C 

atrwct udivi 

llH 1« Cf 
««tv«A(r^, Oil* /• rvctflll alttk 
lactMllfpy, H, Clani>TflPiiM, o 

If (ia» > WUtiaw) < 



> 



AaH «w ■/ 



Ner«PL«t ■ TWt; /* put ^ 



M''«^'iri Calais ta ciaar •/ 



t •/ 



all ttm\m 



■ 
* tM atari af tA* 



ti 



»a«iti 

ti acctrdint t* ttr^la'tflfU 
ta'» ifltuHaat V 



■t 



far (t « flf I 4 v««» i*«) I 
P»akatait(U.>r«rfTPan « 1; 

If CCc ■ *OkafeaT«ftt|IMT«it] h <.* U c •> *<*! C 
If fc ^ *■•> < 

■ai*(e«Taattl1,1T«it ■ • *\ 
GhstaaTaBttiKlrant^an ■ 1; 

arlntltvtfrv. lOlAlcaTait t^l, 

f iani>Ohalc««*di( 1 J a*f ft #a« 
Uv^KtofMOadKi] >Taiiatali 



r- 






t(ttiir«lntt«, iOH^IcvGa^ini, -HI; 



ff f|l«r«#latl 

JU£ad|ttrNi1rW1 






»ifwi 



> 



tttfackTMt (ftnatl tit tftitj 
< 

■KtiT«gt.ii«st • cuint *>(i4ii 

1 



u.t); 



^r«vl«itf i«v«l *); 



/* IftttiA net 



• ItU 

f«r Alt 



> 






*strif>i; Atrwrt IcrMn ■•€ 



itctU Btrvt iirurt»«t> ■truct^t«0 • f 





• >— tfcnw^. 


Hinvt ler^tn 


i' 




^Ttita ), 




• i1r«tulniM> 


t "«trwt ittnrtM 


f 




^tlTH >• 




•*L*flC«|«-, 


•*«it*. 






imiit >, 




'■l4|^dH*» 


n«»T*, 






imin ), 




•-tfi«fi». 


n«*t>. 






tiTttZf >« 




*-N«1gtt*« 


■•Avr", 






liTitn ), 






*uaiT% 






tVTItll 1, 






-WMVt-, 






ivtKin )« 




• ilH«\ 


*Uti*«T% 




11. 


isTti/r I, 




' Tillt*, 


■UiTTI *•, 






p^t%\n ). 




" i#ftuiitui*", njitri •*, 






FTtiin ), 




*'|«fM«l^t*» 


^Tff. 






•TTtllit 1« 




■■••rVl*f*r", 


-•ftl-. 






tTTiim ), 




*MrM»r*r«. 


^TTl-, 






•TttStZI ), 




*'MirMWl»riif* 


» ^tl-. 






•TTtita )« 


1; 


^^n^^^^v^^vr 


r ira*. 






•fTtiin 1 


tfiar *fl«rMM 


fttU « c 








^ 


MMCMlCSli**^ 


*CMH<wwmi", 


«.!. 




wu. 




■«tf*iitt-. 


•CUtTOWt 


TM^, «U 




•IS. eftalc* ■ 


't| 








mow »Ui* 










l«v*l 


**i 










yiiii 


P |c«wtcv) f 










M 


■ ■ t«tCi^lonT«iit(»tr1nt, •truEt^ti, 






MUth CchAU* » 




OATUl 


n, 
c 


Bl; 


i * 111 








Prvt 






»flrawi 



ft 

If UWX9 * KrMrt^riiti) t 2> 
Wu ^- 1; 




■1; 






•t 
H (Ml 



»rirgt 






»rfi«^i(*lii« BCfMn*! first 



^tflrftt 



<>; 



ntt 



•e* 



f» * * i»^» 



r IfWtiA »t PIMM f^ UtM C 1Nff« prw1«tf Mk*f lit V 

«at*i-f^ tin Itvvl; 



ntfMl cftar •iirinf; «truct IN 



< 

Static ttmet itrvctOtti itTucf^tan ■ C 



li 



■ 

I 



< 1^ tttBWt 

i •^iritftM, 

C ■ 

i *-ftaiMltftti*, 
< ■ *!•■•% 
{ ■ lltlt". 






Htrvcl lira *!■. 



f* »ttfrii >, 

t. iBfiia >, 
t, isitin >, 
t. ivnin I, 

I, ISTIIII >, 

t« IMtSItt >, 
>, ]BT»I1I }, 

2, iiTtta K 
1, tvttrn >, 

f, nttm >, 
4, rttiin }, 






< -tOMMriMf 



I; 

»ttiie ciiw^ ni 
^ivkmiiiIk*, 
-tiiuiion*p 



r3Ji - i 



n 



Ml. 






4 



Mr 
»rttrinti-1fb* Scr«m<»i«f«uU TUbs*. MrMn-ttelauUtitli 



i>r 



Ivwl--; 



PrtCfMnlCstflnt. urssn, sffMfl 






1 

nstic atf^^t ItrwtM 


■crsan *acr«vi; int sffMtj 




itt itructihttO * t 






C "-laorH^, 


■«nt-. 




•TTtim 


< ■*Utofl*ff, 


■ftn*. 




ffTTtfllt 


t "^l^rt^t^f. 


IT If, 




trrttllt 


C ••••fWii-^, 


"•TTf*, 




ivTtin 


( *(^*«-, 


'•tri^t tntUtr ■>•, 




tmiif 


< *ivis^*rt% 


*ttrui1 ttm0tt}». 




nriris^w^t) 


C • ■••i^wt*. 


*lTrvCl iHt^DTt ■, 




tt<lMt»«rtl 


i ■ llt«^^. 


■struct Ktttap", 




•Ktlttti^) 


< •|t*lPVlnf*", 


■•tpwt isyw M*)*, 




tKisvsr infti 


1 ■ Mr«Ta«^M"« 


*«trvt iM^vt **, 




rftiin 


C ■*»tt*iti>«r. 


^Jtftl*, 


n. 


■ntiiti 


1 ■-•L«cfcNf^, 


*wim-. 


ti« 


■mtitt 


f ■ i»«C«l«r^, 


^W^Bff 1 


ti. 


ivttia 


f "flsrisr^r-. 


•strut iaysr •)«, 




rmiif 


C -(|AtO«ta-, 


^•m •>', 




mun 


€ •fyi»r«»t»". 


•^•rn *)•, 




rmiv 



IfM I, Si«, dislcs ■ 
Uta« MtSf 

lAtU fcMsfnl < 

HA* IstC^lsnfnt fit Ping. «tn«t«sts, 

sirltcK fiis4«s • fi«tCtel»(WU(UM • U} C 
uw It 

If iMl f l^ M li si tifTf^^) 

Pr^in^mU'i^ mm\ mntfeii in 1nfwltr«»>t llif. 

csur 12 1 

bit! - iriniw-^riiti 4 -ftMi mmmt 

llcH Kbits t VfttMini) >» 4} c 

Oi 

MtC (■ (U40; 



Ul - •tUVll^HflltS^; 



1 




en * ^fKi_uriu>*j 



fli^lnCCflifi Bst In tlili mi 



PrtXrli^l^Ttm tfl 



'• Till! 



rsu 



1^* 



r» < 




} 

ISi«l*^| 



>t 



7, 



»rviM*i4|<tPlfV, vlnrii 


If, affMII 






civ 'Mrlnt; itriKt HI 

i 

•tatU ttrutt ttnBtD«i 


n^H •itinte*; tM •#t«»t| 




■ BtntfidBttP ■ 1 






i *-■«««#<«-. 


*MT*, 




nttin >. 


( • Ucpwf-, 


^trvrt tePMfl •", 




rmtn >, 


i • i^f. 


■•tfvrt ifl«tfart **, 




^Twrn 1, 


C ■'■ff'^nvft*. 


^TTI", 




iTTEtm 1, 


C *-i>fi^r1a^. 


^Tfl-, 




pfTriTa ), 


f *^ftftr#»rtti^t*. 


••ni". 




irrittii >, 


C * ■■F'^Bnvt t ^^ « 


tTTI", 




•TTtlttl }« 


( * MiiiiB^iii 1* , 


*»trvct U»t#«rt **t 




rrnta >« 


1 - Mrmiagir^^ 


■struct ftaditt **, 




rmtir )« 


1 ■ ^*rv(t-. 


■•tr^t VlfiMv ••, 




rTMtn J, 


C * 0««c«ndiint*, 


■•trttft VlfirfBv *", 




mtin 1, 


< "Iftlnt^r*. 


^mmr •>*, 




mtis 1, 


i "^rtttl^t*. 


■•TTl", 




VTTtt J tt )« 


C "-^tfvitfrtii-. 


•VTTf, 




■rmia 1, 


i ••»!*»#?•, 


■•TTf, 




tfTnin }, 


< ■ roff»*t*. 


nrtf. 




■TTttItt ) 



^U« (dk«fn) I 

Htch (divic* • fa4Gii*iu<«iU£iD« 4 111 t 
it 
H (iHntfavHiScrHnl 

«1 



itruetur*". 



If (v1n«Hr»«v*f«^v|> 

ff C«lniiv*rlraf 
rt(-fh« «( 



•i iNn (tHt»«rt|*, wl 



. •* 



)l 



)£ 



*> ftnt 



Iti 



kTMftl 



■t 



•AnV<"»: 



Mint 



tl# 



^•r««|j 




IP, n^ttm, mmt 



(•trtni. Hi 



•ffMfl 



iRt *ff*«i; 



i » l*Q»f I 
< 

C Ml 

I "(DwkNark", 
( " t<rMnt1tlt*, 
i 



:«¥". *fttnf t Intiil 






■ 1* 



C *-tt2WI«tlt*, 

c * e»»*i#t-, 

f "<tlt&*tB*, 

•Utic cMr *| 



•ttrucf f 

n«fTi • 
If. 



I*. 






I, PTttttt I 

1, MM in > 

}« Mttia I 

I. rmia > 

U, iTTIIItf ) 

I, Mtltfl ) 

«« fiuin ) 

t« ivTfin ) 

i, tm\n ) 

t. ivittn } 

1, liTtllt } 

I, Ptniu } 

1, rmtzt >, 

l« PTUICE > 



*«lKHfK3Wt9*, 
«JLL. 




MAI, 

>; 
im I, 

■HIU (iHtlc*) C 

M« ■ >«tt^iflnT«stIttrini, ■inf t«ais. 



-ACiii«ui 
■iMTuni 



■VAftiirr*, 

^IRIMItTCO*, 
■lMCl|1«UlttOH*, 



dk«tc* ■ '\j 



n 



IO Ci »i— i , mIhAm »l»0#riaii)j 

^rftr1n|«*Tl» «er«vi t1tl« liwi tlitt vInAv It •ctlnt*^, 
■i1n*H'*fcr««nr U I »}; 



(•V*t'*| 



* flu 



t-e* 



iaa fa tni M 



/• lf«ty 
wt*rn Int I 




(itrtm, 



f«r Aitvc C Uiffit pr«wl4iid Mb*fU« */ 



t} ctwr *Btrtn|i; Mr^st 



»t«t1c Btrvet lt<^rt»«U »trvctdBt«0 > C 

■•truct SaipH ■■, 

i 



f " MHtl 

( ■ ftftlv«tl«n». 



< • 

ttatic 



C •■Ca^*iT*it-, •«tPvet lnitvil«Kt 



■ 



1 II 




>; 

■tMtc ilwr ■actl 

■•llWtlFT*, 

h 

•t»tlC ClMT 



rui • < 



t. tvTtin ) 

t, IITilll > 

t, iiitin I 

t, itTiin } 

11« ivtiin > 

u, mf in > 

U, ivrtiii > 

f, rmin > 

S« PTtttS > 

\ s, rmiit > 

f« rmiti > 

II, ivTiia ) 

I, PTMta ) 



tPTT-, 




T*. 



■UrTKMDCI*. 

■fTiincuiTti*, "itiiiGiiMf*^ 



nAllVT-, 



lUI • C 

I 




Lp 



it 

nsHc 



t-» 



i« 



MIL. 



lp 



I 



»V 



Mil. 



.1* 



1* 



n« • f 

lOdoi* 

I. 

Int 1, 

t toitij 

liillt (c««ic«i C 

•I* ■ Mta«Mr«nTvfltrttrif9, itrurt^ti. 

(«^T»>farit*t, MTAIin, •!; 
•Mlicft IcMU* ■ •ttOhcictifiAfaia)! i 

M m^W'*— ■fiijitl 

i'Tht nnt napK 1«i lP«tif111«lU Hit*, 
itHI«atU#it}j 



I. 



4t 

kit! ■ paiitt<»ft«tir 
•wttek (^M« I WMMt»ilft| C 
Qt 

tiatnHMtOl ■ 
kit! !■ OaOIj 




, CULMlMtVlf 



1ntC**cllv«t1«t fXtm *** f«^ titi* 

■ III ■11^1. tU-OKIva^tt >teTlvBtlvv|; 

li 

frit* ■ li^»tH>dHtTyp>; 
if (bits I ITWIMETI 1 



m 



X 









•Im ( 
bTMk; 



41 ■ in; 



"" ■■ ■I I !' ■ ■ ■ ■ * riu •^rtffi.e' -I i Bi , i 



, 11, liTtttt 



h 



trti 

I 

■Utlt Mruet ItrttMiM* «t 

€-■••*■, ^Moo*, 11, iMTaiif j; 

c*>>ipt^« ^MTtt-, 11, tTTtita >, 

t*'^**"* ^««»*. 1i, IMTIIZf >, 

Im i« •!«, «^f«« • -ij 

lrv*t*«; 

#<M« Cclwlc*! f 

If ffcMfc* » tvtOk^lCvfMTMtrf » *- *) 

l«v«L-f 
1 



»#| 



cMr •tirlflij nMt»Tt M«imU; UUDID rai«, ^ftm; 
■Utic ttniCt ttrMctO«Tft Mryctdatatl * C 

C" ItttlvwHi*^ 
f tlt^ian*!!]*, 
<" ilt^lmOj*. 

ۥ ilttlmni*, 
fflt I, mm, «h«lc« ■ -1; 



■wj«M»*. 1, pmiu >. 



tn 

r«B • brim>lj 



^ft««t#«tUt 



•iMit »tn«t llrvcttat* ilnft^tsn • C 



*itrt4«; ttrvt iMff^rt •fMtpartj 



C" 

f Of-- -^ , 

I*' ll^vatcm*. 



■mtfTjEl III 






», rritm >, 



11 



li< 



11. ■ntiin >, 
l« •TtEiia ), 

y iTTttiif ), 

1, iTreiiii >, 

1. fTTttllt I, 
1, iTTIttti >, 

I, irntia h 

II, linm I, 
U, litua ) 



I 



■All* lclb*lc«} { 

I«rfl)rMtpvt, MtUIK, Olt 
Mriick (cMIm • tetai«tc*aiMfiWfi « Ijj C 

If IrMtpprt'^tltH^I 



n 



* aial; 



N«Mt»vt2Cfltrlni, rwpgrt, affHt) 
■UtIc itrvt Un«ta«fa «trvt*tiD • f 



n 



€- Altrttrl*-. 

<• rM«rv««tn«, *i«nr«. 




i« ivTtm 

1, l«TI1» >, 

t, ivtttllf • •), 

1, llt»JZ| 

». Mtiin 

11. tTTtilK 

11, trffiiti 

11, i»ftitf 

11, liflttt 

Vt. iMTtltl 

t, t«tllll 

1, iSTIlIt 

•, rTMia • I >^ 

t, PTttiltl • ^ 



>. 



h 
h 



mm • Ktt^i«ivr«t|itflnt, Mncttftts. 

CM* ll 

■*^^*^"**^ •♦ ■•it#*'f stmarw brtn*. 




--^ •* r#»«r*^ lMt»«rt lBMjnr<i^ 



Ui 



, •♦ r«Mrv^ iMt#ert Wttt*, 



••: 



l»fri.» fM- Att«C Mkt tflU(tT 



t thia Mkvfit* 



n«tf 






I BfOi/l} 



»• iW*.* 



•P < 









iilif WW: 



^D 



Amiga File Structure 
A Second Look 



Betty Clay 
Arlington, Texas 



MoK RMf1rn> ol Trmsador are familiar wirh tht> tayoul tit ihe 
di\Mln tonnatted on all of the Cofnmodcire drives prior rn the 
Amiga. We have studied the books b>' Dick Immenk and Geny 
MaMd. read the artidcs b> Mike Todd of ICPUG, and we hni« 
learned atx>ut header gaps, tail gaps, and OCR We know that the 
direaoo «« on track 18 (or 39 on Ihe 0050, ~^.>J)v that the number 
of lertor^ increaiei as fhe head moves out to the edge of thf* di'ik, 
and that ihe 4040. 2031. 1541, and dOSO drtves write un the 
bottom of the disk only. Mu^ ul us are adqil al using track and 
sector editors on those drives. This knowledge can help us on the 
Amiga, but these diskettes are organiKd in a vef>- different way. 

PHYSICAL LAYOUT 

Ttie Amiga diiikettes are lakl out in tracks and sectors, but each 
side of the disk Has trades numt^ered from zero through seventy- 
nine. Each of these tracks (160 in all) has eleven sedon. TWo 
strrularly numbered tracks from (ipiJuste sides uf the disk malK a 
cyllfider with a total d twenr>'-two Mdots. These sedofs v^ 
numbered sequentially from xeio ihrrHigh 1759. and the MTtor 
number is stored within the sector TTie cylinders are numbered 
from the outside in. That b. cylinder lero b ttie oulermost* and 
cyUnder 79 is nearest the center. The sccton txgin at cylinder 0, 
sector 0, surface (the top side] 

The drh^es have two heads that move in unison, but they can be 
addreHed individually. Hetd zero is on the up()er ?>ide of Ihe disk, 
and head number one is bekiw. The licads are nxived to the 
desired track with a SEEK command, and the entire (rack is read In 
wirh a CMD^READ or and KTD_RfL'^D comnand. These, and 
other commands, are used by the Iracknitsk device to control the 
drives. There are programs available to control ttie drives lor C 
pfOgrajnrncTsand fcir aMembly language programmers, bul I have 
nut lound a way to make the necessary .bmap liie» to control them 
from BASIC 

The data is written In MFN! (Modified FrequerKy ModuUUun) 
fc>niiat. and b encoded or decoded in the t>litter chip. It b possible 
10 set the drive lo write in GCR. tiut this mode reaih or writes al half 
the speed ol MF^. Someone will probably find a way to use this 
mode so that we ran read Ihe normal Commodore disks with the 
Amiga, and we are not likely to complain about ^leed if this abiliT> 
possible. 



* - » t t' 



LOGICAL LAYOUT 

Each ol ttie eleven sectors on a track has a wctor-fieader of 1 6 
bytes, plus 1 B byles tliat aiv reaerved for hxture use. and 512 bytes 
of usable data', so our 880K diskMes also contain 55K of tabd 
data, making a lotal of at least 935K bytes per dbk ((here b a hint of 
28K nKjre). There are no header t^a^i^ or tail gaps, but each track 
has one gap made up ol nulls Since each track has ttie same 
number of sectors, one would assume that the gap of nulU pows 
tonger toward the oatH edge of the disk. 



The header or taM area h^% Vt^e same pattern for all sectors, bul 
the 5 1 2 bytes of data are organized differently according to the type 
of block. In a data hie, there are 24 bytes of klenlification at the 
beginning of ttte sector, followed by 488 bytes ol actual data. A 
daredory block or a file het^ler block h^24 bytes(six toiig-¥fords) 
fur sector number, file type, checksum, etc., at the beginning of ttie 
block. 288 bytes of hash-taNe or data, and fifty bng-wordsfor the 
file name, comment, dale, forward and backward puinlefs,clc, at 
the end of the btuck. 

On an Amiga liliu SOfne information b coded in 8-bit bytes^ some 
in lt>-bii words, and some in 32-bii long- words. A liyie' still 
means 8 bHa, but we must distin^tsh between 'words* and *king- 

worrls In rhi illifliiim In liim all of ttie words' are actually 32-bit 
k>ng- words- 

DIAGRAM OF BLOCK LAYOITT 

For any type o( sector: 

Ijihel area 2 bytes of 00 

2 bytes of Al (a sync 1^ In MFM) 
1 1^ of format type (FF on 1 .0) 

I byte of track number 
1 t>yte of sector number 
1 oIlMt byte - MORE ABOUT THIS BELOWI 
16 bytes of operating swtem recovery info (not cur* 

rvnily used) 
4 t>ytcs of header ct>ecksum 
4 t^les of data-area checksum 

For a data block, such as a sequential file: 

Data Area: I word d file type 

1 word for Iwader key (sector wtieie file begins) 
1 word for the sequence rmmber ol this bkick 
t word for number of b> tes of data in the bbck 
1 woid lor the number of ttie next block in frfe 
I word for the checksum 
up to 488 b>les of data 

Or for a root diredoiy block: 

Data Area: 1 word of file type 

1 word of sector number 

1 word of file length 

I word of hasti -fable slae 

I word not used 
72 words of hash-table 

I word of hit map flag 
25 words of bitmap pagnpntfaad ol BAM) 

3 words of date and time last altered 
tSwordiof disk name 

3 words of date and time of disk creation 
3 words of lorward and backward pointers 
I word of aaoondarv Tile type 



IH^f WVf! TWWJW#T^I 



: 



The soltwafr Is written lo allow for seaors of a differeni lenRtht in 
the future vemons Instead o( pointing ro a pantcuUr word, the 
identifying information in the last fifty words are accessed with 
Block-sm - n*. where n' b the number o* longwords before the 
end of the 



READING THE illSK 

When the SEEK command Is gvm, the hevta move in unjM>n to 
the designated track. Upon receiving the READ command, the 
heads read continuously lor two full rotations of thr disk, bringing 
in the contents of an entire cylinder. Eleven seelOfi from one side 
of tlie disk are read into one buffer, and ttie eleven from ttw other 
ikJe go into another The haids do noi wait for a sync mark, and 
make no effort tn fmd a paftkular sector They do not even check 
k)r the beginning of a sedoH Thi^y just read in the data from 
whatever part of the track is under the head when the READ 
begins. The data is decoded by the blitter and the decoded bytes 
arc placed in the track bu^ as they came from the disk. It is this 
manner <d reading that makes the ollset byte of the labri ana io 
important. 

THE OFFSET NUMBER 

The very first time a track is wrillcn to the disk, it will be written 
wah a gap of null bytes, and then the eleven sectors in numerical 
order. In the track bidler, this first write would have thb form: 

SadorNa 1234S6789I0 nulls 
OOs^NoJ] 10 98765432 I 



» • « « 



and It would be encoded for the disk in the ex. It- r it has in the 
buffer The offset number tells the data pointer how many more 
seaof s must be read or wrOten before It reaches the gap of nulls. 

\^l)en thisaedor is read back, however, the heads an not likely to 
begin readhngat the gap, nor at sector 0. Suppose thai sector 7 were 
under the head at the beginning of the READ Then the track 
buffer woukl be tike this: 

Part d seaor 7 ^unk) and then: 

SecforNo.8 9 10 nulls 12 3 4 5 6 7 (moreiunk) 

Offset No 32 I 11 10 987654 



NiKe in the track buffer, the pointer will find the lira lync mark 

and block move the data in sectors 8, 9, and 1 so that sector dght 
is aligned with the beginning of the trdck buffer Then it will move 
past the nulls to find the next sync mark and move the remaining 
sectors up to join the flnt ones, leaving the nulls ai the end of the 
buffer. When a sector is needed for use. the software sorts through 
the sedors in the buffer. iiJid brings in the one» tliat are needed. 
The disk need not be read again until there is need to read a 
different track If the data has been changed, the current track will 
be wrinen back to the disk before the next track is read in. 

When our hypothetical traclG b written back to the disk, the sedoii 

retain thilr Original numbers, but not the original position. So now 
tlic sector offsets will be changed lo agree with the new order of the 
sectoit: 

Sector No. 8 9 )0 01234567 nulls 
Offset No. II 10 9 8 7 6 5 4 3 2 I 




Each rime the track is rc^ written, the tecfor ofbets will be 
changed, and tlw computer uses the olfset numbers to find the 
cormrt sector. This method of writing the sectors to the tracks and 

the practice d readily an etitiic track aat^ time, retnovei the need 

tor interleaving and header- or tail-gapa. albwtng about twenty 
potent more inlormaiion to be put on the disk. By reading an 
entire track sequentially, disk aocesi is much faster and nxwe 
efficient. 

MFM ENCODING 

When data is enoodad in MFM. an extra digit is placed in fmnt of 
each bit to ensure that there will never be two *rs' in a row, nor 
more than four zeros in a row In MFM. a I' bit becomes *0\\ A 0' 
bit will be encoded as 00 if it follows a F bit. but as iO' if it follows 
a '0' bit. Thus, for every bit of data to be reconied, hiw> bits are 
aOuaUy written. The Amiga software, using the blitter chip for 
encoding and deoodliig. separates the odd bits from the even bits. 
First the odd bits are encoded and written out: then the even bits 
are shifted left one posilkm, encoded, and written behind the odd 
Nts on the disk. When the data is read back, the blitter chip 
retncves the extra leading zeros and ones that w^t^ added for 
encoding, leavir^ holes between the odd bits for the even bits to 
fall into. 



The encoding process for the sador labels is Interesting The first 
four byles uf the label are encoded as sepafSSS bytes — first tfie odd 
b*i$, then the even bits of each byte. Then the neirt four (the 
format, track number, sedof number, and offset) are encoded as 
one long- word The 16 bytes of operating svsiem reoover>' intor- 
mation are encoded as a block of 1 6 bytes. The header checksum 
and the data- area checksum are each encoded as one long-word. 
Tlie 5 1 2 bytes of the data-bkx:k are encoded as a single block of 
dala-4he odd bits o( all St2 bytes, and then the even bits. 

A BIT OF MATHEMATICS 

Disks are timed to rotate at 300 revolutions per minute. For OCR 
encoding, the Amiga writes at a rate ot four micfOKronds per bit. 
bi MFM, it requires only two mkroseconds per bit. At 300 revolu* 
tions per minute, there wouM be five revolutions per seoond, or 
hiro hundred milliseconds per revolution. TWo mirroaxoiKhper 
bH permits the writmg of 100.000 bits per revolution. It takes two 
MFM bits for each actual data bit. though, allowing a maximum of 
50,000 data bits per track We have I GO tracks, making 8,000.000 
possible data bits, or 1 .000.000 bytes per disk. We have accounted 
lor 957.440 bytes (9S5 • 1024). excluding the gaps of nulls Isnl 
this renarkrihie efficiency? 

AND A MVSTtJtY 

Ihmm is a mystery ibout the sector labels. The ROM KERNAL 
MANUAL says that there is a 1 6-byte section of descriptive data for 
each sector a total of 27.SK bytes. The drive, it says, does not 
interpret these sections unless the prt>grammer has instructed it to 
do so. This cannot be the label area described above, because the 
information In that area must be interpmed lor normal drive 
opmlkms. Does this refer to the 16 byt» the RiCM says aie 
currently unused, but are lo be used for operating system recovery 
informatkm? Or is there uioiher descriptive label vea? Have YOU 
kMUid the answer to this mystery? 



I 



i.i'^o* 1 




Amiga Dispatches 

by Tim Grantham, Toronto, Ontario 



"A/tdoR Ikt third quaner, Commvdurr arme, '* 

1 4oo't luKiw about you buU got a Ug kkic out ol the kxirih annual WoHd gI 
Commodore ibow. hdd H the Intrmotiotiil Otitic in Tofociio during the 
fifit week of Decembcf . After ayear of being kept on the edge o( our seals, 
it was very nlltf>ing io acfualy aiir the Side^rjhe Genkxk and DOS ! 2 
working and up k>f sale True. Skkcar cost about MOO too much (1 mem, 
really, you can 0H a Oimmodare K to n for 11000 and tto comes with a 
keyboard), and the Qankxli wein*t quite reedy for nie, but thCM were 
mtnor fliea in the KMip ^"itti pk*nt>' o( exhihiro' )dof% and viiilon^ the 
whole ihcMf positively radiated optitnism ami good tunee reKumed kv 
Coounodore. 

k mi alao a chance br me to meet the faoee attKbed to the handtei - M 
you spend any (ime on the mbniMiioii nawodu you kn<m what t mcMi 
by that *Hazy' Dave H^nie (author ol Ptekiehr). John Fou^ (t^ditor di 
Aimmiknt Computlogx Lvry Phillips (^sofi of the Aitugi kirum on The 
Source) Irufii \mm.x^vtf, and Bnan NicsKn and Wkyne Schmklt (aMtant 
iy«yaoiithiCkMWiiBtfcwrorMifuonQ)mpuSefve).De»ePaul. , . liwaea 
pleasure lo actuaDy meet them all lace to face and eitchaiige nen^ and 
vieitt. The ptcw %rai Iheea In teece - the Trmiieector >f courae. npre> 
semed by Ihe usual png d idiob. Run and AHifa^orkL fronted by 
publisher Sievcn IVvombly and editor Guy Wrtgtit, Henry Shiflin; and 
Lkida Byrkd Shilling of Ami Pro^ and Chns Willey of AsTTalk 

Other penonages preaeni kxkided Jim Bytteifiekl, PmjI Hiqgmboltom 
(author ol LPD WHier). Vladimir Schneider (author d Prvfnaloul 
Tot Engine) and Bob htoover d Mimetks (author of SoundScttpe) 

Ait the maior AmiginflwaiecDnipanM^ were rhere. with (heeacception of 
the pew BOiBpenlu Q^nti the money Electronk: Aits is making on the 
Ainlii Tm not surprised Ihey dkJn'l led the need lo show up. though they 
have been there in the peat) The number of mator vendors made kw some 
healthy compeHlien- by shows enct e 512K Anip with 1060 tobur 
monitor coukj be had for SI^O (Cdn ). And whoever dioughl Computer- 
land wouM achiaily exhibit at a bwty Ckimmodon show? (1 shouldn't 
sneer. Computertand has done lairty well with the Amiga, and even bener 
with the PC 10 II Theyll be cspcdaUy happy now that ^nrnrmf?'* » 
coming out with an ATcompatit)le.) 

Whal folkmrs is not in any paitkiilar Older rior b k neeeanrily a baiaiieed 
view of the Amiga ptoducts exhibited - one of the nice thin^ about the 
sImiw waa thai there was so much io see, fm not sure I saw it all lly 
> t w4 oelfi In a nwod e tve left oi& 



• Very VMd - Without a doubt, Ihe hit of the show This product 
received Its prt^iM*re at the World of Cbnunodoit shomr« aa part of the 
TrkkH^ multimedia p trt PHna n ce and bkwee eiyon e aMwy. It's net eaay 
to describe but try to imap^ the biktwiftg: a dancer stands in hont of a 
video camera, dresKd in white. On the AoHp'secfeeo. and on the other 
nonftofi afound the stage, we see his imap to sBhouette, mcTvmg on a 
bsckgruund 0iplik: pmn iB d by the Amiga, a venton of leonanto da 
Vinci's famous sketch of a muitilimUxl man landing tnskle a circle The 
perkxmer learhes out. Htt digitiad image on the Anugi screen reaches 
out and his hand touches a simll dn^. Slmukaneously. a synCheslaer 
conn ed e d via MIDI ro the Amip plays \h^ fir« note of the opening trntare 
kem Alao Sf»rach ZArathuatra. The performer^ or nther his image. 
touehea oilier sm iLtove Ma kewl on the screen. Each time, the 

cMes pube and produce the noles of the Ivifare. a dilicfent nole» and 
sometinin a difterpni timbre, being trigpnd on Ibe syntfteaiBV by eech 
circle As the tonbre ends, he reaches up and touches yet another circle 
and the backpound switrhes to a sliiiife lamfacape. The two iiHiskiata 
accompanying kkn siart playing. 

If we were to k»k at ttie perlonav in front of the camera, we wmkl see a 
human agakist a plain backdmp making odd ^slkiilations into thin air. 
But our eyo are ^led u> the momton. as we uralch him >am with the 
musicians, quickly toudung thb Aml^ obfed kx thb sound, and another 
object for that one We walch as hb Image piipe one eotouted drde and 
paints the Kieea wHh it: thn anollMr, Md Molber. uniU he Aands amid 
coib of cobun. to one quietly amazing sequence, two ootouied ^beies 
attach the mse lv es to his arms, and stick these* tolling back and kiith as he 
wa%-es his arms. Then, he soaps his artm. and the spheies detach, ctiange 
into birds, and fly off in opposite directiom. 



And so H went, eied aier dazzling effect, beautifully conceived and 
pPBhnlonally peHormed. lor a solid 20 minida. The ^iplwse was 
tumultuous and there were shouts d BravoT. 1 saw it three timea^ 

The potential for thb kind of product b mind bogging - nd |ust tor 
pcftormance sfipbcattons but tor productkxi houses, educationaj pn>^ 
pans, Ihenfieuiic pnpam and - let's gsl sertoua, here - ganieat Kor the 
ftm time, you, or a very reasonable laciimile thered, will be able to 
actually erUer a gune And you thought Tron wa iAe isntiqr. 

• SoundScape. b>' Mm)Hji2» Thia marvdous MIDI sequencer ww used 
tooonird nd onl> ihe £>nitHitoBn in the Oickets" p eribn na neebrtthe 
lighu and video sequences as well. Electronic Alts has apparently wrinen a 
module lor SoundScape that will Id their Ddne Musir ConntrDcllea 
Set print SoundScape h[e% SoundScape haa ai t <ioming 
^UEDIiBu r the Amiga. 

• IhAw Plua and SooU - Aegis Detfdopment were ninning their CAD 
aoftware on a peckagad ^Mem they are OMiiarfcHtng with Rotosd and 
Commodore: a 5I2K Amiga, I080ootour monitor, and a DXY Mor 960 
ptotter. I've since had a cioser knk at Draw Plaa. n\ impiesslve software 
that comes wuti good documentaiion and plenty d etampto df awmgi and 
pam librariei^ However, I am no dest^ en^neer md really have nodtin^ 
to compere it to. Sotttx b the reincamalton d Hsaktilt witti MIDI 
capsbiUty and IFF compaiibiliry added. 

• Paf e^tter and PbbUaher - Commodore is now touting desktop 
publishing programs Rke itwse two, publbhed by Goto Dbk and Bniwfi- 
Wagh rpspectnnly.a the rpplkdionlbal wfl make the AnigB take oil. 
Uliile these propam ^nly go well beyond Print Shop rhf\muslbe 



c 



& 



tmpruvfd btkf€ ^ cm cmpili with the Ww of N^pftUker Gdd 
DHkdoc*notippetrlohiwilBMriQ9,forflnn|ili(ipr lu^irtg 

Etie ^m benv«en Ictten depending on rheii sh^itl, and ri^ittwr Nm 
AMotvciptb^. tboygi both diim thtf wcti wOl won be tviitable. 
The Maciniofh will dways hive « lead in Ibb Md: » Henfy Shilling of 
AHiProfect maguine reminded us in a TPIXI panel diacHaion on the 
hiturt ul I he Amiga. Ihe ptxd liie on the Mac*i tcieen is oadly I /72 \ or 
one point' in typsetiing \ai^m - m odw imfda, it vm ifcijplBd Jiqm tfce 
(MLUip up lor publishing applicatxmt. 



• Syttfin Monitor - TMa aity utility is put out by a «hI American fim 
caUed Zen Software Jt may juA be the pnjduct that wiU let lim Butterfield 
na^ find out what the heU b pDiiic on in the Am^ KnKi AnKKig u(hef 
thio^ If iet& you aMign a monilor window to any talk and track its current 
HHut, moufceaUocatkm, aodCPU usage. 



ilonAl TrM ivnginc - from Zirkonkiaf Uontreid H you ever 
wished your favuontf text editor had commands lo. »y, reverse the ordcf 
0* adiareni chdracien or assi^i custom kntnat commanda to hot" keys, 
this pio^ammaHe text editor is the answer. Not only a the keyboard hUly 
pfo^ramnuble. using a wnple macro language, even the drop-^down 
menus and Ihe action of Ihe momt hiHIona am be c M Hom to d. The 
number of IBathit can be opcnMoneets limited i>n[> by thememoiy 
ivailaUe You can cut and piste freely between any nie. Cof^ntionflei 
to aUowPTE to act like other editors, such as Wotilrtar arr available But 
Ihe fun is programming it br all the teatuns yo«i ooMldnt iMve bdOR. 
Pretty goodiiorll 50 (Cdn), 

« DCK»-2-OOS - This is a iMly that provkftes ttMtaUtkm bet««mi 
AiBiiiDOS and MS-DOS. itripping high bits it twnwy. and ta^ 
ol the Ikwfccd/carriage return oimbtaalkms The vdhvaie cin abo lo^ 
both kinds of disks, and search through vdMireelorics When 1 pointed 
am ID die s a tei wwBian that such utilities are pfu\ ided m AmigaDOS 1 .2. 
she Marled to squirm, but poimed out ihat D0S-2*DO5 permits use of 
wildcards th^ can be used loauloitialethepfDoaailOionefldent 



* Key lo C - another pradud worthy of note (grin). This is a library of 
funciforts wnnen in C for C pfOframmets thai ckiady appfoidin^ 
ttatements and hjnctkMa. 



Other vAwaie at the show Pro Video Ca- r from JDK Images, a vkleo 
character pnefMor: E ,E. S ,T, business managentent «id aceootiiing prc^ 

gram, from Buiine»Decinnics5QlNrare&Tcduiok^ MlAfliiga File n 
fiie managefnent software. MIAnilga Word word pfocrsiot. MIAmifa 
Ledfer fowai ledger, all from SuftWood Company JefSH utiUtieft md 
' the Hewlett PMard LaserJet 4 Imtt prfaiv, horn C Ud.; Order 
desktop i>rgdnucr from Northeast Softwarf Croup: Dniaaat program- 
liable database software, from Traitsttme TechnokigMS Corp. being mar- 
iMd in Canada by Creative Sytfems; LPO PUnner and LPD Writer 
^weadstatf and word prooeaaingnltware from Digital SdutkMis: Zingl. a 
mouse-driven CU. from Merkiian Software: ProWrUe muHif»i«^(oni 
word pi o CT sa o r , from New Horiiom Software: a venfon of Superldt fc>r 
the Amigi hum Pnsm Sofhvare; and Sispcitaiv arid Loglatli program- 
nuble database and iniepMid sprttdsheet, from Progre^uve Periphery 

^liat was partkulariy encouraging about Ihe pmducts shown al the show 
was not w much what they did, but ^h^t they mde poBibtr. Souih^ 
acApc \ cry Vividt FTE and others ire marvekius because they have 
been designed in the spirit o* Ihe machine - open-«ndel smoothly 
tnultiiariiiDg. providing the user with the most tadUe loots pij^sibtc tor 
her/his endeavour. 



AmI Ite hardware. 



ft « 



• A] 



Amj 



Sidrcu- - Complde and for sale Everything works u prom 
udmg the ability to slick 2 megs of RAM in the Sklecar br use by 



• Grnlocfc - Ditto dmost It should be for sale by the lime you read this. 
(I kno«». I knoH'. Ui- said f/ior before.) 

• DIglVkw - Hm JesiiKm, the devefoper. was at the show and demon- 
strated the impfovtmanis: daaoer tmageft, moioriaed lUtor wheri, and 
edkinglynettons - inipffCMlve product 



• B*rfh Xetec and C Ud were Milling SCSI liUerfaces and 20 Meg 
hard-drlvca lor the Amigi for SIOOO fUSy Both permitted dMiy- 
chaining cif further SCSI devfos and both cane with Amiga driver 
sotwaie. As with Ihe Microforge and Tecnw unii&. the Xeiec controller 
mrviefids operalkm of all uther lain on the Amip dwing roKis and 
wnies J aswme this is atao tnie of the C Lid. product 

• C Lid. was atao setting their ftMEGA 1 megifa^ memory f K|mnMr>n 
units for f$m Aaip. Tlicy were iom<Hl by Cocnspec's AX2000 .' mru^Oiyie 
board and fS OaU SyMks Pow^r^oifdwhidkca; ^^h up to Ihe lull 
S m^abytes cf RAM. This lati is an imposing unit which ofl^ a tot cf 
memory at very reasonable cost. Howe^TT. il is not auloH^m figuring: it has 
to bt added by calling addmem' in Ihe siartup-^equcnce. 

A tow of theae ncmory eipan^iun un^ts (such as die ASDG Inc RAM 
board. Stdi* £llects'» Skle^^Siore. and the Mioobotics unit) come with 
virluaidiskcatiaUnty TliisworksMlihi^theRAM diskbiitilcanbcwri^ 
Thttmean^i that shoukl your Amiga crash wWe lading out your 
tic-tac-ioe game. sa>. you can reboot and the fil» in the virtue dUi 
Ml be intact - your source and inctala Wm wouMn't need any 
. a tremendous conveniecKe. 



• Perfert Sound from SunRizr f ndu^ries. b a stereo sound digitizrr fcw 
tlw Amiga ihai comes wHh very good sound sample edWng MAwwe, H ii 
currently the only Hood dV>^ and seUs for the edmndjp waaonabk 
price of I79,9S (hSl 



Fmish thb InstalbMni of A-D wHh some news about expariMon 
hvdwanMhat J was unable to put into the last cohimn I was hoping to »e 
this stuff at the WOC but tittle uf it wai ^lown Nevtmheloa, it Is voy 
heartcrung to kc Ihe broad variety of pmducis available There are 
flupan^on boxes like the PAL unit from Byle-by-Byie. the Turho 
Ami Kir >m CSA, atxi the S id e Arm fromSh fo-E fccts- they conn 
St . ilm but most offer at te«st two sfots for lOO-pin Zorro 

slandar- , u boartb^ Vou can fUl them with RAM boank SCSI inter- 
faces and hard drives. DMA hard drives, coproccsaor boards, tape backup 
drives - the ) isi goes on and on. 

One company in partiadar drrw my aMenlfon with ihetr EtbcrMt and 
AROIET uiierlaccs. Amer^ar Technologes aiso supplies a vertkin ol 
Sun M k ro ay tfems's Networii FVe Systan (NFS| with the Ethernet 
interface that eriables tfie Amiga to act as a paphics w or kalH io fi on a 
net«T»rk with Sun worksiaiiun^ and otiier computefs using an impiemen- 
ttfion of NFS. Each interiacr is available in eithor a bus or backplane 
votion (86^n or 1 00-pin) These capabilities, combined with the copn> 
cfMor boards from ^A and otheti, are making the Amiga a serious 
engi r w wwg workHalkin computer. 



Tbeesb' iturcstotooktaf inanyeKpiMton ha idw it earethi 

if it is a bus atttchmnt, doa it have a paas-throu^i? Does it auto- 
configure? And Is it anow^-slate device^ Ihhe manufacturer answers yes 
to ail of dieie, then you are sale to pass on to mofv roundMie matters^ such 
at price, qoaMy and avaiifattity. 

FinaU). my apofogics to any of you who have seiU me mail on Compu- 
Serve or PeopMJnk 1 w» without a modem tor over a monlh and waa 
uoilile to tespond. Alter sdMng acme withdnM^ syn^oms. I have 
managed to obtain another, so if you have any questfona or com menii. you 
can t««li me al OS 7142€.1$46 or PtoopleUnk AMTAa liihl next time, 
inqr your muuse never squoik. 



Compu-toons 





w//, 1 1 



We'ft co»v\pufe'^'^^ rwuj... 



•uswa eucrf?6A/fc MAii- has sa«o lis -Isoaooo' 
To i)Sff TH« excusf'rwE cmeck /s wrJe-Mw*'/' 



I'M so«ftV rb E>orrt£R you o// 

YOUR rt a I- 1 PAY S.MS. r«OA\AS, 

tooT I chN'f fmP 'IV' / 






TMf P^R/I-S OF MO^r A//D pfCK I 



'AffA««Nny Be©'s uiktSTmH fcTow Tab 
Office pAffRKss Wf^^'r uwi£p v4ei.1i " 



News BRK 



MuBitliiifUV^^BKK 



V you haw i pivv ictotK yiM wuH nhc to «tayi for Ifw NEWS Brae t^ 
mite wi^ that iht comptMn or dtvire for which thr pnduct n intended it 
tiii«fci.ii<U- noKd. We mxfv^ hundmb d pR» ifkMM lor exh issue, md 
ones whose MeiMled reidmhip ts int ckw miot unfortumlriy ^ 
triih bm H iliould alio be mentioned here dut we only print ppodud wte t m 
whch air in fonw MWf applkatite to Cammtttore aq u ipfn en l Hrw% d tivtt 
ttdllftooiipiMr nowt noun be mclwd tf leitf 6 Bantt in idvince. 

Transactor News 

Tr^ttartor C ur ren c y fStandftrd Decreed 

Alter a bng day fwealini In the Triniiclor AbbRviidora Labo^ 
KkftBtshamcximeiipwiih i new comeiilaQ tal «1 be OffKi^i TVmoctor 
FbUc) (OTP) from niM on TV retf of the worM if InvM to b^ 
frffmg too tedinicil, the kkt i» thir prices for our mai oedrr prndticis (MOP^ 
and for pnteb Jfled hete in Newr BRK. will hencHorth be §9m in one of 
three fonm %xx (Cdn) for Canadian prkes, to (US) for 15 prices, and IXK (15/ 
C| when (he fpedfied amount is to be pakj in Canadtajr dollan by CanaifiMt. 
and 15 dollars by AmerrAm Fm m ^xmt^ik d the new US/C atibreviation in 
iftion, pk«w lefer to the final parayiph of the foltowing announcement 
(FftstFA). 

Sebwriptkxi Intcraectioo Set 

On doMf irapecikin we have found the overlap of TPUG mefitei and 
TVwwiCtorsubKribcrstobeaiwyt 1000, not 400 at pnvtooly reported Durtiif 
our fttti coafHriion, many weii lAtfriBdid due tn diffimi^ betwe^ 
■ai M dMabai . It tmm that a conytfer )tm canl iHI if tw nama are the 
lamr v»ten a middfo inlW ii Included in one bui nM the other To cofnpaiiai^ 
pn^am was wrtlen that botdmd on artifky imHligenoe. However, K's sM 
poHiile that some matches wefe maacd. a^iecially if the portal/iip code wm 
diflefeni in the (wo da i abaies. So. if you're a IFIKj member AND a Transador 
nta7i)er. and you're ititt gentng two iHues, plette let us Iww aiid the h«o wfll 
be 



rnwfclBint«Aacrip*ioc«haiatoprove<ftobeaneiefclieinmindbeTylin8 We 
had hoped to hive updated Ihe eipiry dale tor aU Ihe combined subsrnptnns by 
thii kwe Howewr. only those TPUG members whose mcmbershipt would 
haie expired txkirr recen'ing this taue ha¥e had their eipiry dates eflended. 
The remaining TPUC/Transador c oinbin atiu rB will hai^ theif expiry daks 
iVdMed by nod ivue. 



If you> renewfi^ a wbKriptlDn . or sufscrfcing for the first time. fou1l hive the 
cbotoe at getting the f«piirnapline(r»TPlXl insen) or beoimini^ 
a TPUG mrmhef and gffting the frpv TPUG insert as part of your IVansactor, 
I you wart lust the T^anoctor. use the inast cani m the mapilne to wbaotoe/ 
renew U you wiin the imerf at wei. send your TPUG lenewal form to TPUG 
ffheyTI send it to you betoie your curiefl mem b ers hi p eaqwies) or/ll you're not 
atnw% a wtatm. coniaci them about becoming one. The otfrent coat of a 
TPUG aaaodtfe' methbership \s 12S 1K) (IB/Q For thai you get the ir»erf plus 
acxe» to TPUG's bi^ pubfic domain disk lixary. neiher ot which coiMi tvith 
te $15.00 (US/Q Mdiscnptnn to the Ihnsacloi 

Miqr flf One who Ml into the tntetscctfon m descrtied above abo hmn 
Itafttartor DM wbacrlplfotii Theae wiU itill be haiidled by us. ^ 
eiplR. a notice will be sent Some have pointed ou that, "we would Rnd it muih 
etfier to renew to both tf They were to both expire at the same time Now that ««r 
mcatbershiF»/uibscnpiiofB have been combined, the ma^nes end ai one 
iaue and the di^ at another". Good point. What we wt^gtn a this: when you 
renew your dtiJc iBbK Ti p t ton. add 17,50 (US/Q for every disk neccsnry to 
make your dbk and mapxine mbacriptioni concunenL 

orofiioLonpucMrve nooe 

TTiedmi dial port to Oonpiteve in Toronto is 752^150 TTils raMte iMa 
been in efled since Sep tewbe r M However, the CompuServe lnin>ftks thai 
bound into lheQniOiandGad|ietsissue(rrie«sedOd. l)sti]lihowtheold 
M you iMMcnl used your Intro^P^ yet. please make a note in the 1i« at 
thebadofthebooUet. 

ftwIVaaaaUui Fa witb Mag^Dbk Subacriptkw 

Subscrtoe or renew to a coflsbfMtttn npfine atid dik subsrnptbn. and we^ 
sefid you a free l>ansa(M T^SNrt* You save 29% off the mapzines. 1 6% ofl the 
dfoks. and gel aTransador Tworth S]3.%(li7 95 if >xxj order the jumbo siaeO 
The T-Shirts corne in 5 tttes (red onJyk. vriih a 3<ok)r fcreen fo«uring Duke, our 
RMcot. <keaaed in a snappy whke tux. standing behind the Tnitsador fogo done 
to yittow with black ''^^ borders. The scren wii done Mnga H«dif "^upo^ 
opaqvingT pfooaK Nut con ui<|uito a bi mote than thoae decals thai crack and 
bde Mine has been thmu^ (he warfi at leasl 25 times now. and H still shows 
virtuaU)' no sign d wear due to *^»»hing machine pUBirittnrar. 



ftbilOnlen 



Chedi your last maprint. M die aipiry dale shows "Dec Sr or "Jan ST. then 
foyrexpkryifote shouki now be extended by Ihe number of issues remMagto 
your Transactor subacrfplton, lim» htfo months' When this dile actuiily 
an^ves. you shoukl have received the lante number d mapzines shown in the 
tite pabited in Newi BRK IM 



At this part youll receive a renewal notice The notice wl come kom TPUG 
bccauK dw comblMlBn IS done by mergint the two Into the TPUG chtfabiae^ 
NMuralfy you shoukl renew toone CW the other Renewing to both wHI mean 
youii start gefting two maprinri all over apin. and after we p?f thb sihatfon 
sorted oil. wed Uhe 1 to be Himinsaed for food The tad is. we couM make a 
caiccf ouU thk So, alter alJ the existing mrrlapping tiemberships/ 
subscnptnm haw ben conibtoed and extended any and alt new ones wUl ^ 
hvo mapzines; one wkh an tasert from TPUG, and another wthoti an insert 
kom in This applies mainly to Ihoae who are currently '^ansactor aubacnbm 
nareiw inAjmeaBMii,putconagMiigDeeBMigone. 



Vyou're « Transactor s^>scrte. and >-qu re u»ng the poatigepikl order card to 
purchase iero olhv than a nibscriptbn, pleaae writo yoir iitecrfber rurrt^ 
on the card, Thb wtf your order is tecorded atong wMi your subsaiptnn 
toton nitto n in our 



CusE4>fn»/lh4ri>n Hmrdwire 



Shippic^ hardwaie to the US ton Canada often incun oatoms and/or dirty 
diirgeaatthedestinarion SomeofoursupplienafemtheUSandtorUSoidm 
peooeaacdb^' us. we haw the itcM Aipped diieci wthoU bringing them into 
Canada. However, other harih« are kerns manufactwHl in Canada and sent to U5 
destinatnns mqr anlie with a surdiarge payable. The Transactor cannot be 

retiponribfo far Itae durges. This rn^' also add to #ivery deliys^ H you'w 
ptaod an order kv a haidware lem and tt seena to be taking a nther forig time 
to arrive, k Mqr be silting at ]nur focal otstoms ofRce. in which case a notice tt 
prafaaUy on Is way for you to come pick k (^. 



n 



-jjn^^ri 



SfMCM 

Dm Ibaim tmn PrD-Unt, PAL And POWER lor the 64. b now sold oii. 
lUundi wiJJ bf sem for wy onl» bejmd wlM coiid be Itt^ 

Vitev f ]«ue 03 and Volufm 5. 1in» 02 rn» IViMlta to 1^ 
Isi^m iMMf 00^ Hfiiiftrfe on rrocnrfkhe. 



Pie Ukwifig detAiR Ibr produm tbtcd cm the ini ate 

inrtcutaf quntion abcM in Hem tliM In i Answnmi h^e, plene wrie or catt. 

Wei let bick tojm and rrssi UIbc^ incoqMnle the «PMr into hilun 

ofitw»deynpiiomiPttialtfhw«|gib«wlfcB«ypug«iqrtq^ 



fl Morag hctum < Ihe C^ Animation SyUnn, t29JS(U5/Q 
tkii FKhm is a latf . snooth. lull-Kma mmmm lor the ComraoiBie 64. 
wilten by AHA' (Acim Heurmic Application*) With Moving Prtures you itae 
|Otf tonurJto fftphks lod todraw the frames d your movv* then ihow I at fd^ 
mimillon gieed wth a »n0e command. Uovie xfipli' writen in HASC cm 
uae die Moving PiaiMWCOfnmand set to provkte cQ wi pfe ieconiTddaniflwirt 
BASg K «i!t naMJiiortfanKi^Ka Off ewoiina pfoy— wtm 
a movie i» being displayed. AnimatKin lequencci can «^ly be added to 
BASIC propimi. Mmrmf Piduro leriwts include: ^rii icreen operaiion - pifi 
pipho, pafi tod * even while a movie is ninnini; npoti, dap M Any Infiie. 
cfange poMtlon and colours, vary diapt^ speed, elc; hold several mcmcs oi 
memory and wMk iMtotfty tmcn one movie to anotbcr; inManl. on4jn^ hH^ 
available ai the touch d a )aey\ nocopy piotoction used oiidnlL 

■ VdlMOdem 12. w/c^4e. wl OS Intrt^f^l 1329 00 (OJn). tm 
Not only do you fe« the Vdkinvdem 1 2 (DQC afvimed). bit ^ 
M fio extra charge (die C64 cable goes diractly onto Ite ^^ 
aUe if lor anv standard RS232 06^25 temale oNmctor) Plus youH racelve a 
bwCo i wp M Sar¥gli « »^^»hidicortainsaUsefiD.a P aBw > or d .AndllS.(» 
omned time! The Mbnndem ] 2 wUI iivork M mor 1 200 baud, ^ 
compUfc to" ID H wtt worfc with viriuaUy any lerminal software beouse the 
cDoiminds aie coritdled fay you from the heyboard - jutf type "AT (lor 
ATkfton) aad loibw with any d several layto ieme mber commands - no 
ipecy POICing or cWmiA dMng routinei inwaryt p ve bee^ 
ioraiiiMMl3yMn»aiid^Mlalorover«y«r*lkwvthembo(h' KJHjit 

ana wth (get thi^ a 5 ycir manuiidurer's wfloi^r on parli ind labouri The 
modem is shipped insured via UPS at no cxIti charge. 



I/O Inlerface Cards 

■ BHIOOiyQ liierlKeCard w/docymentation f I29(U5K t199(Ckln) 

■ BH100-AD8 Ktiaaad A to D ConvetsMMi Uodiie US{\Si 169 (Cdn) 

■ BHIOOB^innenCdunellSdlUS). t239(Cdn) 

■ BH100-S Securiy System i2S \\JSi 139 (Cdn) 

These products tram tmdli^ent UQ wiU make gteai Christnas gM AtvJ if 
you've been wondering whtf to do with that \X 2Q that doan t gel mudi 
iftHito anymore jheyieperted*liyo<N»ffiifWMiedtosttrtdolBg«mef^ 
mM irt er tacin f. ted ea^. and in eipemWy. then these Mems are Ideal. The 
boards they leni m lor evalmtton are nirn^ty waiching lor Hoodi in my 
baHmem. Too bad 1 dvlnnhink d i belofe the lood - 1 only took aboii M hour 
uiing spare parts I had l>'ing amuiid - no ffidstoit. DO capadton^ iusi him Mripa 
d meul, a piece d slynioaflt a brkk. and abcwl 20 leel d wife Ibtf Mi aho 
ooiecdrkg dust. Once I gH time J imend to make a do some inofe surveiiMic^ 
since orily one channd B curiendy in use. And the progrirn to do it? A quirk and 
messy 5 Imcsl Since the bowls are nernory mapped I hroMgi die ovtrltge port, 
a PEEK is ai you need* The 22 page manual is dear and cofidse. All products 
come with a 90 (ky nanylKitair'i wmmmy Shjppid taMsd via (JPS M m> 
flStndharge. 

■ 1>MiactorT<Shirti SlSJSamf t17.95(lSA:) 

Ai me i tio ned eartier. they come in Small, Medium, Large. Enn Laffe, aod 
Jumbo. They're I3.9S each. 117.95 lor the Jumbo. The Jutnbo mates a good 
ligMrirt/beadHop - i s BKI Pm 6 bot tall and wei^ in M a dim 1 SO poun^ 
- the Staaft fts IK 1^ bitf th¥*i bow I like them U you don t we suggot you 



ofdirdiem I stoe oner what ywt unuMy buy The design liKSHOidMtoga 

"supeMpaquing ' peocoi so ihey wear much kfogei thaa yam onilnary sowds 

and IrarKHL 

■ The IVansactor Book d Bits and Pfetes 'U IM.9S (IS/C) 

Not oounting the Ti^rie d Contents, the Indet, and tide pages, rs 246 pg^ d 
Bb and Plec»lnm ivvidTbeTkanaactor, Volumes 4 through 6 Even if you 
bive all ihoae isaues. I nahes a hmi^ idMMc - no more ttpplrig thruugti 
napilnes lor dkat one b* that you lust know is somewheie Abo^cKhkemis 
iofwafd/fewrse lUuumd . OccaaatonaRy the ieois in the Bib coktmn ^h 
pcved as updries 10 previoyi bis. Bki that weR sMv III oaCuR an also cna^ 
telemoad And the mdev makes it even easier to find dioae quki bcli dm 
eliminate a kil d wheel i^^tfwntmg 

■ The'ntfmSEtoi 1S4I DOM Upricte mJ5(US/Q 

You can burn your oarn itfing ihe ROM dump Se on Transactor CM! '1 3. or you 
can get a set from us Theie«e2ROUsperset,andtheyfiinoton^llieSA^< 
bug. bd a nunter d other bi9 100 (aadeacrtked in PA Sbynater'iartkte. Vd 
7. Issue 02)^ AemefldMt i SAVE9 is about to bil OQ you. then Scnich and Save 
may just ctobber you too This hasnt been proven lOOX, bia these DQUs will 
eNminale any poaiiMldKs short d dHlieniely cwsing them (ie. allocking or 
opening direct acc^ butters bdore tteSav^ 

■ The MooSeulh CM/1541 I^CvirkJie, I».95(15|, ll29J$(Cito) 
This cartrktge, doipiFd t^ Bnan Steek; (a service technician lor sewnl schools 
in southern Ontara I. will test the RAM d a CS4 even if the machine is 100 sk± to 
run i psopvn' The c^ndgp tikev tismgteooHBd d dte machme It tc^ dl 
RAM m one mode, all flOM in another mode, and puts I4» a menu wth the 
toUdMp'ing choicer 

1) Check drive speed 

2) Check driw aUgnment 
3)IS4]SeridM 
4)C64seryir^ 

5) Joystck port t tell 
€|Jti^ickpon2tesi 
7) Cassette port tetf 
B) User port tort 

A second boanl. that ptop onto the User Av1« ooriairB 8 LEDs thai leii you aero 
m 00 to Mt> chi{>> Ooiipide wgk 



■ Inner Space Atibdogy 1 14.95 (US/Q 

This ts our ever pofNisr Complete Commodore Inner Space Anthofagy. Even 
after a year md a hiV. we sdR gel inquiries about is oontenH. Brieily. The 
AMhdogy is a rdtoHtee book - H has no reading" mmM (ie ^^ptf^^O 
In 122 compaci paget, there are memory napa lor 5 C8M compders, 3 Disk 
D^vea, and roipi d COMAL summaries d 8A9C conunands. Assembler and 
MLM commarak. and Itod tmjc e sa or and Spreadsheet nommands ItadHne 
Lanpage codes and modes are summanttd. as wd as cmf poinis to ROM 
routines. There aie scdnm on Mi^c. Gnphics. Network aod BBS phone 
numbers. Computer Qufas, Hardware. Linii4CHmk conversions, plus much 
moie . . abod 2 5 milon diaractere told* 

■ AX1000 Amip IISG RAM Biix 17^ 00 ( t ItOO SW) (U^ 

11035.00(4 t2SS&H)(Cdn) 

■ AX2000Amip2 MG6 RAM BoM 1099 0O( + SI0OS&H)(US». 

St276.00(-(^S2SSAH)|Cdn) 
The AX200D adds 2 Megrt^lesd 'iHt" RAM to the An^ dkiwiv mt tods 
to run in Ihc qntem ai once, or tor use at A fad RAHhItIwc. The unk pkip Into 
the exparaion connector on the side d ihe Amip and dilates the connector 
br dher dfftai to pkig tato Up to two KAVt boiidi itiiy be ptopid liitafetor 
(limied by the Ainlgs a power supply), adding 4 Mepbyses. The box has "aOD- 
ooi4f , io with KKiutart 1 2 the RAM wdl autoTMtedly be added to die lyaton 
when I ts bootod. II you are usirig Kkkstart 1 .0 or 1 J (no adcKonltf, you can 
use the prograin inctoded wdh the AX2000 to add the memory lo the s^^mUl 
and change >-uur si wfty lequrwe to aiiotlieaty add the memory on patm- 
1^. Standan) cxpanann bus architecture waa used in the deapi d die AX2U)0. 
ensuring compatabiily wth all peripheialiaiiiopvtftog^rBtem nkmn The 



unobtnoive fled boi a the itii» hei^ juid colour at f he Ai^ 
to itw nde vHAoii titaf up Mdi «tti ipice. The uiii b buft 1^ 



llli mv to be llw mart hWffmMKnded Aj^ 

orr to tclifl^ be ivyate. to wv K tettitig i hffr M The ^1^^ 

nr^ the AX2000 or iht 1 4lci AX ] (m irotn rhe ftufaimp^ 

^^iflrini md HAndlintj fo the LfiA. b m awrrier and tndudn ^l: ciatow 

dwnce, oi jm can ope to ctar ^hipcMii smurvrlf and hwc I iMppvd 



■ Si4>erpalil.O CS4 149 JS (US)l 159 95 (Oln) 
aPDdvtWriter C64 »9tS5afi)Lt39J5(Cdn) 

■ PbckEf Planner CS4 129.95 (UQ. mJS (Cdn) 

■ rdtecnier C$4 12935 (US). 1^,95 (Cdn) 

■ SqierpakLO C12a IS9J5(US). l69.95(Cdn) 

■ r^kriWrier 0128 139 J51US).$49l95 (Din) 

■ PbdKl Planner 0128 S39SS(tJ5)Ll«J5(Cdn) 

■ PbdM Rtt C128 I39.9S (U5). $49^ (Cdn) 
I hxhH DKtioawT $t4 95(USt.SI99S(Cdn) 

Venm 2.0 d the software tfEilTomDigittlSaiil^ The 

im padcafM incfcjde both the 64 ind 1 28 vmiom on the lame d^i. E^ 
Pdcta picfcar Witt «i tor 159 95 (U5^ or tS4J5 (Cdn). A Si^terpak will 
tadude a0 mtee tor 199.95 (IJS) or 1 1 ^ % {Cdn), The hidKf DktKm^ 
IH 95 (LS). S 1 9 95 {Cdn> Hovem they im'l be avtfrtiie horn i» un^ 



%iton 1 b ita MMIe^ aod it lerrffk priceff The ^ and I2S vei^ 
comr m scpMie paclaffes, but the rnl deal B the ipQcy price far aU three TV 
C64 Sti|grpikbM9 95 (lJS)or 1^,95 (Cdn^CI28VBpriiia>e>S9JS(i;S}gr 
169.95 (Cdn)^ To top k (rff. well Ihfoiv in the F^xJui t)vtimr^ 
iri» averar ihe prke d aU lour, jl cornea to lets than the price of twof 

■ The ThraBASC IM f»JS(l&0 

Ths B the cornplete cdledkin d every ThwbBASK module ever public 
Votome 7. faH» ] There are over 1 20 cornttuixb ti your dopoial. You pick the 
ones yiw w«i to UM, arid in any cfMitinMbn* h'f 10 lirople that a mmrnary d 
ooiTuctnnf fiis rigi on the dnk labd. The manuat descrtiv «di d d^ 
coinmanc^ piyi tar 10 wTie your own commands 

■ Slater Kit 1541 S29 9S (US). 139.95 (Cdn) 

S^jer ICI i&. qolto iniply. the beitf disk fife diliy then li 1^ 11^ 

vihiable copy-prolecfed origoab ^ wbali happeo^ to me twke too many 

times) So Cv WW ihipped over fitn 3l9fr Kii and orden continue to pour in 

■ Gnurne Speed Con^iter 159.95(15), S69.95(Cdii) 
ThB a^CTHMler B far BASIC 7.a on the Gxamodore I38l 

■ Gnonv ICI Uratty 139 95 (US), 149.95 Mn) 

Gnome Kt is a Cbfnmodoie 128 utiJJty wih enhanceimnts far the B^ 
(Hke Trace, Rnd, taiMber. Dckto. AM. etc) ai fiel » altmed munior 
and iQpnr dUt MOlor InctfaiiL 



TraaiM^ar DUa, IVMncior lUrk laraes. Mid Mcnrflcfae 



AO inni d TTie Tranoctor liom Volfliie 4 iKue 01 torwtfd «e now avdUde 
on tnkiviche. Accorvfing to Computmc our fkhe manubcturer, the itripa «e 

the >]putar 96 page ii»^ io they rtinrid be coovailefvlhcvery ficV 
Soriie bm Me ONLY avaBiUe ori mnoflche - iheK ait marM ^F only " T^ 
dher issu» are anUle to both paper and fiche Donl thedi both bom far 

the» unleii you waii boih ttK paper m*n AND the mcto&che sice far the 



To keep thinp Aiple. the pike d Ihmactor 
na^nei. wih one cmptioa A riigfa btdc isaie 
wbKiiptions ite 1 1 5.00 (MS/Q. The empto? A 

f S, and 6) wUl cost iitft rnSS (USA^r 



is the same as 

will be 14 SO (US/Q aoi 

compfaieKldl8(Vdufnei 



Tliii M also dioivt the "thrmes" d each issue. *Theme BRKs* didn't 
Muiv 5. bneO) . The TVansaaor DUi '1 ciMttatodl peofran i^ 
aid DM ^2 oiAte al pR^Mi fcom Voktroe 5. iuiies ) -3 jyierwarili d«f« 
is a xpme disk far each osue Disk 8 from The Lanfu^a l»ie coriams 
OOMAL 0.14. a sdMoaded. lightly scaled down verston d the COMAL 20 

cartri^ And VqImkA. bsue 05 pubTnhed the director^ ior Thmaciw 
]Id9. 



iVul.4.l»ue01 
IVd 4.1»ie(K2 
rVd 4.b«ie03 
IVd 5.l$sue01 
IVd 5Jssue02 
IVd 3Ji&ue03 

I Vd 5, Issue 04 
IVd 5 tisue05 
Vd 5.teue06 
Vd 6.liaueOI 
I W. 6. issue 02 
Vd. 6, Issue 03 
Vd6. Issue 04 
Vd ejvKjrOS 
Vol. 6. Issue 06 
Vd 7, tew 01 
Val,7,|»ueQ2 
Vat. 7. bm 03 
V'^ : k*ije04 
Vd 7. Issue €5 



( 



( 



llflueOI- 
4. Issue 05- 
4.l»ue06- 



Diskl) 1^^ 

[Mill VVd 

(■Diskt} avd 

- Sound and Graphks 

- T>in«)n to Machine U^B^ 

- Piracy and PiQlectfan - MF on^ 

- Busines A Eduralfan - HP ordy 
-HaKhmeAPteriptadB 
-AkfciAUiiJffifs 
-MoreAidiAUtiHties 

- NchsciUng & CommunicatucEs 

- The LsnfuBffei 

- Impfamenring The Sdenon 

- Hartw art tSdhiwe Imertetag 
-RedUeAppicattons 

-ROM / Xertvl RouOnes 
* Gativs From The Inside Out 

- PiDpamming The Chipi 
-GamosandGa^ltts 



MF«* 



II 



MFonly (BDiskl) 
UFonty (■Piikl) 
MTonly (BDiskt) 
(■Disk 2) 

(■D»k2) 
(■DMi3) 
(■Disk 4) 
(■DiskS) 
(■DiikS) 
(■Disk 7) 
(■DiskS) 
(■DUiS) 

(■Disk 11) 
(■Diritl2) 
(■Disk 13) 
(■Disk 14) 
(■Dak IS) 
(■Disklfi) 



liidiutry News 



reuBily pecefved Iran the manutadurers. Please note ttiatpnductdescripitona 
aie not the resuk d eyalMiiCin by The TVansaaoK 

Nrw Books frvB Abarai 

AbacmSdtwarehatiaifalitfKdanolhervQiunrm their nteencesttln 
faritoConmiudoce 128- theC-128 BASaCTVainingGuKle. The book ti aimed « 
the user who wants to learn the CooviiodDre 128 s bdi-jn BASIC pr«pmming 
lanpisie: The book aiott to be a Thorou^ iiriioductfan wih oimefous exaoK 
pies to lead the i«ader tan simple to moie advariced pfopaoMning techniques. 
The sugrsl«l t««ii pnn b 1 1 6J5 (USV 

The nen book in the C*]28 sens - BASKT 7.0 Irtfemds - w» scheduled far 
dipping in laie Deceafair m Tlie w0Htod ictHl price b »4.% (US). 



Aoolber secent publkiticm from Abacus Sdkmm k GGOS - Inskle nd Oii, 
writien by MaoiRd Turradort and R Ketldoh It mdudes mUodudory tiuierid 
abou (£i:& the Desktop. GGOS^miE arid GEOSnum'. a tvip^ 
lips far every GE05 uier, as weO as a deaoriplfan d GEOS intemats Tlie 
BUVMBd letaa prkv is » 1 9 95 (15^ More infarnltan h WMlade hnn: 

AbKusSolwaft 
2201 KdamaaooS^L 
P.O. Box 7211 
QnodR^ifaMI 
49510(616)241-5510 

ik!»^5cBoftirC-t4/12t 

DigM Engbverlni hat annonneed me release d Is ftrsi piodud - Eye-S^ 
«lto4pw far the C-64X-t28 Md SXfil oDa^Nien. 



Eye-Scan'i hw dwe canndge pkigi irso the compiier i ''uaer-port " making 
^phfcs inpu smple: oompoase video in via an RCA Mrk^ Conversion time b 
sppRudrMe^ 6 seconds p9 p^ level 



wtatt imigmg. up to I ^ly Imb, kmm immton. #ih and IS2S prinm 
ftfpoft, Abo induM a i pw p— ntfl i ttMjr padtap diat aUowt um to 
litoe the imiie aimmfii al^onlhnit In rhrir own ptopwam. Ey«-Scan b 
eoififiafiile with Koiii. Ooodfe! and BWof Mdte 9^^ 



utonaied pfoccM conuol. 



ftiaAlB 4^)plicatioro indude aataHhHt aeortyp 
paDcni anaiyM, loooi vnun ana kxi laoQpiHon. 

^ft^&an can be oitlmd bi 189 9S (U^ front: 



landDo^i 
27185WKdly.SuileCl65 
IMMKLOfifDa 97301 
(SOS) 245- 1 5(0 

Spsrtui DOW with Applr n rompatlbk- dbk drfvf 



I. 19B6 Munc iy<WM baa upariaged Ihe Spartan, the 
Appli U emulator lor the C-61, to indude an Apple comp«l)k Ml drivt 
j^irlan sm the dNition to (fiicoriinuf the DOS cart and i^^ 
oMiyatiiladiriidmitiiaapMaptodbymimawiWffciuittliowciMloi^ 
the Amount cil tedinkal airiMvec Rqumd fw ttia loA^ 
the 1541 dbk drivt. 

Goal ol Ihe Spartan induding Apple oinipatisle dldt driw b t33SJS (^ 
li rti iu l miwi ton. c^ i-aOCM63-^S27 or contact 



ttmc 
c/oEDPIndustfKS 
'30S-l4O1WarathAwnue 
B,C V6H 1C9 



^The 



Commodore 

Show 




■ Fri,, I^b. 2a 10:00-6:00 

■ Sat., I^b. 21, 10:00-6:00 
^s^^j^ aSun., Feb, 22, Nkx>n-5:00 

^ Brooks Hall, Civic Center 

San Francisco 



EXHIBJl^ EVENTS AND 
DOOR FRIZES 

NATIONAL COMMODORF 



SHOW SPEOALS AND 
DISCOUNTS 

SEETHE LATEST INNO 
WnONS IN HARDWARE/ 
SOFTWARE TECHNOLOGY 



Ow AMIGA. ^iTMMiiinii US fC 
«^ C-M aurlwIpUc*. 

REGISr RATION KES: 
One Dm Only— S10 
Thfir Diy l^sft— S15 



for MoTT Isionnjtiofi Or Tb Rnvrvt Exhibit Space Contact 



COMPUTER SWJV, HiC 

POB<.« Jot»t- CA9StS8 

Mnfl)9 7B SWAP • 80u /.. -j^VAP • IN CA 800 ?'>? SWAP 



htk A Byit 128 

centum Sfl ftw f ^ tah A Byte $1. a dbk and nmory itUity tor the C-64 
pfDipiminer. hai b«^ uppad^ lor mt on GommDdoffe 12S. The new vcivon. 
fMt A Byte 1 28, wiU be airaM>le in Mnary 1987. 

In addition 10 alt the iMttKH of the originy product iWt A B)rto 1 28 pre)^ 
wvvil other «|Mta»» aidi aa 80-4almn dup^. icMlnf tv v^itm^ to ^ IS71 
doutib-sided dbk. and convertrnft 1S4I iir«la-sKM k> 1571 doubb-bded 
bmut wtthout hvmtmt data abeady on kom bde. 



Aa iwkaBPeidwnbn oldie origmai pfoduct. fteric AByie64 V2 (Hq|Blfaerwih 
die Obk Mechwic and new manyal, wl abo be iiafciili at the lame time 
Ajhon^ kmum. added or knpmwed, the manybohircf lob tlie kdkwrinf 

• nad cr wrke up to tndt 40 aco wUi DOS header anon 

• ediaaarQCRdsa 

• raid **»»" track GCR dMi 

• tei formt «i^ or naddple tncks up to 40 

• do halMradu up to track 40 
** inaqna dnk amis 

Uaen who oiirn the original fMi A B^ 64 cm order the Peek A &)« 128 
appade padtafe Miidkil P^k A By«e 64 V2 ml new mannal) far the price 
d 120.00 (US), hr nore kitormatkMi. coftad: 

Quantum 5aftw«e 
PO Box 12716 
LatePtok 
FL3S403 



Lincoln College 
Commodore Computer Camp 

with 

JIM BUTTERFIELD 

•nd other oxperts 

July 19-25; 1987 

Ibpjcs include: 

• Amiga 

• C-128 

• Robotics 

• Telecomputing 

• Additional selected topics 

R>r further Information, contact: 

Office of Continuing Education 
Lincoln College 
300 Keokuk 
Lincoln, IL 62656 
217/732*3155 



itiA ftaraoctov 



Wi^^f w^^wt T^BIHWiB f^ 



I 



I 




*7H * 









^ 







Type in a lot of Transactor programs? 
Does the above time and appearance of the sky look fam 
With The Transactor Disk, any program is just a LOAD away! 




Only $8.95 Per Issue 
6 Disk Subscription (one year) 

Just $45.00 
Ksee order furin at center fold) 



Also chttk out the TransBASlC Disk 
Complete u ith 24 page manual, just $9.95! 




CompuServe. 
You DON'T Have Tl) Know How rr Works 

Tt) Appreciate All It Can Do. 



CoinpuServe ii i osmpuler infamutton 
s«wf Vhj suhscnbetoi. In return, wu h*« 
KseiftlDinirKrtiliM- >uni d inionnation. 
enlerlainnient conuimmcatiaDftwd vniccs. 
Here IR 1 Ifw of the hundreds of amazing 
Ihinipyoucanda 

COMMUNICATE 

CB ^tntiMor leahues 72 dwinek lor 
BullHin Boards • * 



urtwfelhou- 

imdswiU 



thcia 




rdaUvcs and biainc5» assucialet can Slav in 
lourti thrnufth EMsyFkt' Ektfmnk MaU, 

M<>re Ihan 100 CompvScrve Fonaou 
wdooHie p^rtMipalKJCt in discmsions tin .ill 
lortsaf lDpic& Software Forum* help with 
online soiutions !c» viltN^-irf j»ti>hU'ms 
Hvthwe Svpfioii FonuM cam to spe- 
die compulffs. There's even free soltware. 
and (jntifie cdtlmns d coniputer penodkall^ 



HAVE FUN 

Plav' afl torts diporti and eoler- 
tainiTK^nt trivia pnei bnJn-l^'.ising 



educational games and the onty 
online TV-iMe ^me shrM »ith 
«l pmes- Oc br the uJliin<itt* 
inexileinenL gel into an miefdc* 
tne space advoitiiie. 

SHOP •^ 
THE ELEcmmc MAa"* 

takes wu on a >. « *»i>\ i • < ' •«!^l 
shopping sptee of nalionaiy 
known mefdunls. wuhuul e^«r ^ 

W-avtnuhome 






S 



•0 



< 



SAVE ON IHIPS 
With CompuServr s travel seivioei yoi can 

scan t^HivailahliiM^ fin ' ^iiebar^int 
and even book your cMmOi^ online Pluv 
then are cmpiele iMinp d (wr 2&.000 

BE INFORMED 

Cdn^KiSetw puU all d the laM newsal 
your foigerlips. inchiding the AP news >k'ire. 
(be NWirV^ ftttf . the 5f . LouB ft»f- 
Oi^cft, spedited busineM and tfade 
[HjHications and mon (Xir aorcutive newt 
service will electmnieiliv find, "dp'and ftJe 
news br you .. .to read whenewr youd hke. 

INVEST WISELY 

Gel complete siaiistics on 
over 10.000 NYSE /VMLX and 
ore seoihties. Hotonc 
tiadiog statistics on (^ 
90.000 docks, bonds. 
funds, issuer ^nd 
options. Ftw yean o( 
daily commodih' qu »t(*\ 
Updates on hundreds of 
companies woridwide. Slan- 
(hfd & Poors. Vdue Line. Oma 
dcAen investment toob. 

So much for so Uttk. 

Afl you pw IS a IcMc one-time cost for a 
SubiO^iOon kit (S4«pried retail price 
$39.9SUS>Ui^ rates for 
ilaadwd onhne time (when 
CompuServe ts most 
active) are just KK a 
minute En manv mafor 
metropolitan areas you 
can IP onfane with a kxal 
phone raW Phis. wuTI i w en g 
a 125 00 IS, Imrodudory 
Uragg Ci«dil with the puictu!« d 
yiMtf CompuSerw Subacriplion Kil. 



So easy the whole futiily 
can fjp online. 

CocnpuSt: ^ "menu-driwn." so be((in 
ners can sanp^ nad the OMMi (irti d 
options) thai appcsar on 
their screens, then type m 
their selecUons. II you ever 
gH Inst or confused, type H 
kt hdp Rememt>er. >ou 






lifms f»ntine thrrxigh 
oar feadback ser- 
vice or ptoie our 
Customer Sennoe 
Department. 

BcfcireyDu 
can ancss ConpuScrve. you need 
a computet a modem (to connect your com- 
puter to your phone) and. in some casci some 
simple communralinnssoft^'arp Nowwu're 
read\' toofder. For your low. one-lime sii>- 
scnption Iw. youH receivp. 

• a comptete. ea^to-understand. ITOiNge 
gml-bound Users Guide 

• your GKiusive prekmmary paavwurd 

9 a subscription in CompuSerw's monthly 
maf^ne. Onknc Today 

• a $25.00 US usc^ t Mit' 

lb buy a CdmpuSerw Subv nfHimn Kit 
see your nearest computer dealer To receiwe 
our in fa r m siN e brochuT- ^»rck'r direct 
write or ran 614-157^ 

CompuServe. ¥3u don I have to kncm hew 
ii works to appredite all il can do— fcr you. 



CompuServe' 



kllUI lll^lO'^ SflfVtOBC 



PO Bob 20212. 5000 Amngion 
ColuntiiA Ohio 43230 U S A 




. t 



I 



4 

A